- Can I install canaltp/navitia-bundle in a Laravel application?
- No. canaltp/navitia-bundle is a Symfony bundle, and Laravel never calls a bundle's build(), boot(), or DI extension methods, so the package would be inert even if it loaded. Laravel has no equivalent of Symfony's bundle registration, DependencyInjection extension, or Configuration tree. Reimplement the Navitia client as a first-party Laravel service provider instead.
- Why does composer require canaltp/navitia-bundle fail on Laravel 10 or 11?
- Laravel 10 and 11 pin symfony/console, symfony/http-foundation, symfony/routing, and symfony/process to the 6.x/7.x line, while this bundle constrains symfony/framework-bundle and symfony/http-kernel to older 2.8/3.x versions and PHP to ^5.6 or ^7.0. Composer will refuse to resolve that set. Run composer why-not laravel/framework canaltp/navitia-bundle to see the exact conflict before spending more time.
- What does canaltp/navitia-bundle actually provide?
- It is a Symfony bundle that wires a Navitia API client into a Symfony application through a bundle class, a DI extension, and a configuration tree. It exposes services for coverage-scoped Navitia endpoints such as journeys, places, stop areas, departures, route schedules, and isochrones. Most of the value is configuration ergonomics around a thin HTTP wrapper and DTOs, not unique capability.
- Is canaltp/navitia-bundle still maintained?
- Effectively no. It has no stars recorded, zero dependents, and no description beyond the words Symfony NavitiaBundle, and CanalTP was absorbed into Kisio/Hove while Navitia stewardship moved to navitia.io. Treat it as an abandoned wrapper around an API that has since evolved, with no CVE response path.
- What is the Laravel equivalent of a Symfony bundle?
- Laravel uses service providers registered in config/app.php or bootstrap/providers.php, a config/ directory of PHP files, and container autowiring. None of that maps to Symfony's bundle class, DI extension, or YAML configuration tree. Bundles are not portable to Laravel; only the code they wire together is reusable.
- How should I call the Navitia API from Laravel?
- Use Laravel's Http client, which is Guzzle underneath and covers everything the bundle's transport layer does. Create config/navitia.php with the base URL, token, default coverage, and timeouts, bind a small client class in a service provider, and add DTOs only where response shapes warrant it. Most teams can build this in well under a day.
- Should I use navitia.io SaaS or self-host Navitia?
- navitia.io is a token- and quota-based SaaS, which is the fast path for most Laravel apps. Self-hosting Navitia is a multi-service deployment with GTFS ingestion and PostgreSQL, so treat it as an infrastructure programme rather than a library choice. Decide this before you write any client code.
- Which Navitia endpoints do I need for journeys, schedules, and network data?
- The reusable surface is coverage-scoped endpoints: journeys for journey planning, places and stop areas for search, departures and route schedules for real-time boards, and isochrones for reachability. Which subset you need determines whether a roughly 150-line client suffices or whether a DTO layer is warranted. Enumerate coverages and endpoints before implementation.
- How do I test a Navitia integration in Laravel?
- Use Http::fake() with recorded JSON fixtures for each coverage-scoped endpoint so tests never hit the SaaS. Cover failure modes explicitly: 404s for unknown or discontinued coverage IDs, quota exhaustion, and JSON shape drift across Navitia API versions. Distinguish cacheable reads such as places, stop areas, and schedules from inherently real-time calls such as journeys and departures.
- What are the alternatives to canaltp/navitia-bundle for PHP?
- The strongest alternative is a first-party Laravel integration built on the Http client, using the bundle's source as a specification for endpoint shapes and parameter names. Check whether a maintained standalone PHP Navitia client exists before writing your own. Given the bundle's abandonment and Symfony lock-in, do not install it; read it as documentation.