canaltp / navitia
一个与Navitia Api(https://api.navitia.io)交互的库
Requires
- php: >=8.0.2
- doctrine/annotations: ^1.13
- doctrine/cache: ^2.1
- psr/log: 2.0.*
- symfony/cache: 5.4.* || ^6.0
- symfony/validator: 5.4.*
Requires (Dev)
- phpunit/phpunit: ^9.5
- v3.2.2
- v3.2.1
- v3.2.0
- v3.1.2
- v3.1.1
- v3.1.0
- v3.0.0
- v2.1.0
- v2.0.0
- v1.4.1
- v1.4.0
- v1.3.9
- v1.3.8
- v1.3.7
- v1.3.6
- v1.3.5
- v1.3.4
- v1.3.3
- v1.3.2
- v1.3.1
- v1.3.0
- v1.2.1
- v1.2.0
- v1.1.7
- v1.1.6
- v1.1.5
- v1.1.4
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.0
- v0.38.2
- v0.38.1
- v0.37.1
- v0.36.0
- v0.35.2
- v0.34.3
- v0.32.0
- v0.31.3
- v0.31.2
- v0.30.3
- v0.29.3
- v0.29.2
- v0.26.0
- v0.25.1
- v0.25.0
- v0.23.3
- v0.23.0
- v0.22.0
- v0.20.2
- v0.20.0
- v0.17.0
- v0.16
- v0.14.2
- v0.13
- v0.12
- v0.11
- v0.9
- v0.8
- dev-bo-3258
- dev-refs_bo_3101_check
- dev-upgrade-sf-6.4
- dev-patch-doc
- dev-bug-bo-2516-trv2-composer-warning
- dev-master-1.x.x
- dev-master / 3.1.x-dev
This package is not auto-updated.
Last update: 2024-09-19 23:16:54 UTC
README
Navitia Component是一个PHP库,用于查询Navitia Api(https://api.navitia.io),并控制查询参数。
需求
- PHP: >=7.4
- 一个Navitia令牌
注意:如果您还没有Navitia令牌,您必须在这里注册:https://navitia.io/register
选择您的版本
-
NavitiaComponent v1.x.x被用于生产中的旧项目(例如NMM实时)
-
NavitiaComponent v2.x.x与Symfony4等框架兼容
-
NavitiaComponent v3.0.0与Symfony5.4等现代框架兼容,旧公司名为CanalTP
-
NavitiaComponent v3.1.x与Symfony5.4等现代框架兼容,现公司名为Hove
安装
使用composer
composer require "hove/navitia":"^3.1"
旧版本示例(v3.1.x之前,已弃用)
composer require "canaltp/navitia":"~2.0"
如何使用NavitiaComponent?
通过自动装配
在您的应用程序的services.yaml文件中添加以下内容
navitia_component: class: Navitia\Component\Service\ServiceFacade factory: [Navitia\Component\Service\ServiceFacade, getInstance] calls: - [ setCache, ["@cache.app.taggable"]] - [ setConfiguration, ["%navitia_config%"]]
然后,将@navitia_component
添加到使用NavitiaComponent的服务中,如下所示
App\Service\Navitia: class: App\Service\Navitia arguments: ['@navitia_component']
设置配置
您可以使用setConfiguration
函数传递一个配置数组。
namespace App\Service; use Navitia\Component\Service\ServiceFacade; class Navitia { private ServiceFacade $navitiacomponent; function __construct(ServiceFacade $navitiacomponent) { $this->navitiacomponent = $navitiacomponent; // Configuration $config = array( 'url' => 'api.navitia.io', 'token' => '3b036afe-4242-abcd-4242-99718476c2e0', // Example of token ); $this->navitiacomponent->setConfiguration($config); } }
查询示例
$query = array( 'api' => 'journeys', 'parameters' => array( 'from' => '2.3749036;48.8467927', 'to' => '2.2922926;48.8583736', ), ); $result = $this->navitiacomponent->call($query); // Returns an object with Api result
配置参数
用例
Navitia组件支持以下API
- 旅程
- 覆盖范围
- 出发
旅程
行程示例
$query = array( 'api' => 'journeys', 'parameters' => array( 'from' => '2.3749036;48.8467927', 'to' => '2.2922926;48.8583736', ), ); $result = $this->navitiacomponent->call($query);
另请参阅:http://doc.navitia.io/#journeys
覆盖范围
示例,检索有关覆盖范围的元数据
$query = array( 'api' => 'coverage', 'parameters' => array( 'region' => 'sandbox', ), ); $result = $this->navitiacomponent->call($query);
另请参阅:http://doc.navitia.io/#coverage
出发
示例,获取某条线路在指定日期和时间后的所有下一班次
$query = array( 'api' => 'departures', 'parameters' => array( 'region' => 'sandbox', 'path_filter' => '/lines/line:RAT:M1/departures?from_datetime=20160615T1337' ), ); $result = $this->navitiacomponent->call($query);
另请参阅:http://doc.navitia.io/#departures
调用任何其他API
要使用此组件和您提供的配置查询Navitia的任何其他URL,可以使用以下模式
$query = array( 'api' => 'coverage', 'parameters' => array( 'region' => 'sandbox', // Coverage name 'path_filter' => 'stop_areas?variable=value', // Url to call ), ); $result = $this->navitiacomponent->call($query); // Will call http://api.navitia.io/v1/coverage/sandbox/stop_areas?variable=value
使用查询构建器
您可以使用查询构建器
use Navitia\Component\Request\JourneysRequest; use Navitia\Component\Request\Parameters\JourneysParameters; $query = new JourneysRequest(); $actionParameters = new JourneysParameters(); $actionParameters ->setFrom('2.3749036;48.8467927') ->setTo('2.2922926;48.8583736') ->setDatetime('20160819T153000') ; $query->setParameters($actionParameters); $result = $this->navitiacomponent->call($query);
使用查询构建器获取所有下一班次
use Navitia\Component\Request\Parameters\CoverageDeparturesParameters; use Navitia\Component\Request\DeparturesRequest; $query = new DeparturesRequest(); $query->setRegion('sandbox')->setPathFilter('lines/line:RAT:M1'); $actionParameters = new CoverageDeparturesParameters(); $actionParameters->setDuration(1); $actionParameters->setFromDatetime('20160615T1337'); $actionParameters->setForbiddenUris(['lines', 'modes']); $actionParameters->setDataFreshness('realtime'); $query->setParameters($actionParameters); $result = $this->navitiacomponent->call($query);
运行测试
对于这部分,您应该使用docker(需要安装),并使用以下命令启动
make all_tests_dev
许可证
该库位于MIT。