njmh / ptv-timetable-api
PTV (维多利亚公共交通) 车辆时刻表API的简单封装类。
Requires
- php: >=5.6
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文档)
使用方法
$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()(它仅返回包含所需 devid 和 signature 参数的完整API端点URL,如官方API文档中所述)链接之前不执行任何操作。这可能对您使用除了cURL之外的东西(例如Guzzle)进行调用很有用,或者提供URL到javascript前端并使用浏览器进行API调用。
示例
->get()
->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()
->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();
待办事项
- 扩展文档
- 添加测试
作者
- Nick Morton - nick.john.morton@gmail.com
此包提供现状,请不要联系我寻求支持。