njmh/ptv-timetable-api

PTV (维多利亚公共交通) 车辆时刻表API的简单封装类。

dev-master 2017-09-17 02:25 UTC

This package is not auto-updated.

Last update: 2024-09-29 04:37:08 UTC


README

此Composer包提供对PTV(维多利亚公共交通)车辆时刻表API(v3)的简单PHP封装类。

免责声明

这是一个非官方包,与维多利亚公共交通没有任何关联。API提供的数据均根据Creative Commons Attribution 4.0国际许可证从维多利亚公共交通授权。

本包提供“按原样”且不提供任何支持,既不从我这里也不从维多利亚公共交通那里提供。

有关API及其数据使用的更多信息,请参阅https://www.ptv.vic.gov.au/about-ptv/ptv-data-and-reports/digital-products/ptv-timetable-api/

要求

  • PHP >= 5.6
  • cURL 扩展
  • PTV 车辆时刻表API开发者ID和密钥(见下文)

安装

composer require njmh/ptv-timetable-api

开发者ID和密钥

为了使用PTV车辆时刻表API,您必须首先直接在PTV注册开发者ID和密钥。

按照以下说明操作,这些说明取自PTV提供的以下文档:此文档

发送一封电子邮件至 APIKeyRequest@ptv.vic.gov.au,邮件主题为:“PTV Timetable API – request for key”。

收到您的电子邮件请求后,我们将通过回邮发送API密钥和用户ID。

注意 由于请求量很大,提供API密钥和用户ID可能会有延迟。我们将尽快提供给您。

我们还将把您的电子邮件地址添加到我们的API邮件列表中,以便我们向您提供API的相关信息。

注意 PTV不提供API的技术支持。

“APIKeyRequest”电子邮件地址仅用于向您发送API密钥和用户ID以及任何相关通知。仅对密钥请求做出回应。

注意 我们将监控API的使用情况,以确保我们的邮件列表是最新的和可持续的。如果您3个月以上未使用API,我们可能会禁用您的API密钥并将其从列表中删除——但您始终可以注册新的密钥。

更多信息,请参阅(RTF文档)

https://static.ptv.vic.gov.au/PTV/PTV%20docs/API/1475462320/PTV-Timetable-API-key-and-signature-document.RTF

使用方法

$ptv = new PtvTimetableApi();

设置您的开发者ID和密钥(见上文)

$ptv->setDeveloperId('xxxxxxx');
$ptv->setDeveloperKey('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx');

示例

// Get all PTV routes
$getRoutes = $ptv->routes()->get();

// Get only train and tram routes
$getRoutes = $ptv->routes([$ptv::TRAIN, $ptv::TRAM])->get();

// Get stops close to a location
$getStops = $ptv->stopsNear(-37.817979, 144.969058, ['max_distance' => 250])->get();

说明

->get()->url()

本类中提供的封装方法在未与 ->get()(它向API发送cURL请求并返回数据)或 ->url()(它仅返回包含所需 devidsignature 参数的完整API端点URL,如官方API文档中所述)链接之前不执行任何操作。这可能对您使用除了cURL之外的东西(例如Guzzle)进行调用很有用,或者提供URL到javascript前端并使用浏览器进行API调用。

示例

->get()

// Get tram routes with 'Brunswick' in the name
$getTramRoutes = $ptv->routes($ptv::TRAM, 'Brunswick')->get();

// Returns

stdClass Object
(
    [routes] => Array
        (
            [0] => stdClass Object
                (
                    [route_type] => 1
                    [route_id] => 1041
                    [route_name] => East Brunswick - St Kilda Beach
                    [route_number] => 96
                )

        )

    [status] => stdClass Object
        (
            [version] => 3.0
            [health] => 1
        )

    [url] => https://timetableapi.ptv.vic.gov.au/v3/routes?devid=xxxxxxx&route_types=1&route_name=Brunswick&signature=AF6CB93E1AB6CDA93C6D9E6B4100905927D45DA3
    [execution] => 0.94602799415588
    [time_utc] => 2017-08-27T11:56:50Z
)

->url()

// Get tram routes with 'Brunswick' in the name
$getTramRoutes = $ptv->routes($ptv::TRAM, 'Brunswick')->url();

// Returns

'https://timetableapi.ptv.vic.gov.au/v3/routes?devid=xxxxxxx&route_types=1&route_name=Brunswick&signature=AF6CB93E1AB6CDA93C6D9E6B4100905927D45DA3'

路线类型

许多封装方法需要指定路线类型为整数(或整数数组)

// Get all train and tram routes
$getRoutes = $ptv->routes([0, 1])->get();

以下是所有PTV服务可用的路线类型

0 - Train
1 - Tram
2 - Bus
3 - Vline
4 - Night Bus

您也可以通过API的 routeTypes 方法请求这些值

$ptv->routeTypes()->get();

为了使方法调用更加详细且路线类型更容易记忆,为每种类型定义了一个类常量。这些包括 $ptv::TRAIN$ptv::TRAM$ptv::BUS$ptv::VLINE$ptv::NIGHT_BUS,可以用以上列出的整数代替

// Get all train and tram routes
$getRoutes = $ptv->routes([$ptv::TRAIN, $ptv::TRAM])->get();

HTTPS

默认情况下,此包使用 https:// URL 作为 API。如果出于某种原因您不能或不想使用此 URL 进行 API 调用,请使用以下方法通知包仅使用 http:// URL

$ptv->dontUseHttps();

待办事项

  • 扩展文档
  • 添加测试

作者

此包提供现状,请不要联系我寻求支持。