bitartist / vvophp
PHP library for accessing real-time public transport data from the VVO (Verkehrsverbund Oberelbe) network
0.1.3
2023-01-02 17:14 UTC
Requires
- php: >=8.0
- ext-curl: *
- psr/log: ^1|^2|^3
- tracy/tracy: ^2.9.0
Requires (Dev)
- chevere/xr: ^0.7.0
- chevere/xr-server: ^0.7.0
- phpstan/phpstan: ^1.9.0
- roave/security-advisories: dev-latest
This package is not auto-updated.
Last update: 2026-03-10 08:27:59 UTC
README
A PHP library for accessing real-time public transport data from the Verkehrsverbund Oberelbe (VVO) network, including Dresdner Verkehrsbetriebe (DVB).
Inspired by kiliankoe/vvo
Features
- Departure Monitor -- Query real-time departures for any stop, including delays, platforms, and route changes
- Point Finder -- Search for stops, streets, and points of interest across the VVO network
- 10+ Transport Modes -- Tram, CityBus, IntercityBus, Train, SuburbanRailway, Ferry, Cableway, and more
- PSR-3 Logging -- Optional logger integration for debugging
- Proxy Support -- Configurable HTTP proxy for API requests
Requirements
- PHP 8.2+
- ext-curl
Installation
composer require bitartist/vvophp
Quick Start
Search for a Stop
use VVOphp\Config; use VVOphp\VVOphp; $vvo = new VVOphp(new Config()); // Search for stops matching "Hauptbahnhof" $response = $vvo->searchPoint('Hauptbahnhof', limit: 5, stopOnly: true); foreach ($response->getPoints() as $point) { echo $point->getName() . ' (ID: ' . $point->getId() . ')' . PHP_EOL; }
Get Departures
use VVOphp\Config; use VVOphp\VVOphp; $vvo = new VVOphp(new Config()); // Get next departures for a stop (e.g. Postplatz = 33000037) $response = $vvo->getMonitorData(33000037, limit: 10); echo $response->getName() . ', ' . $response->getPlace() . PHP_EOL; foreach ($response->getDepartures() as $departure) { echo sprintf( "Line %s -> %s (%s)\n", $departure->getLineName(), $departure->getDirection(), $departure->getScheduledTime()->format('H:i'), ); }
With PSR-3 Logger
use Monolog\Logger; use Monolog\Handler\StreamHandler; use VVOphp\Config; use VVOphp\VVOphp; $logger = new Logger('vvo'); $logger->pushHandler(new StreamHandler('php://stderr')); $vvo = new VVOphp(new Config(), $logger);
Proxy Configuration
use VVOphp\Config; use VVOphp\VVOphp; $config = new Config(); $config->setProxyEnabled(true); $config->setProxyHost('http://proxy.example.com:8080'); $vvo = new VVOphp($config);
Demo
A web-based testing GUI is available in a separate repository:
Development
Prerequisites
Setup
composer install
Run All Checks
task
Individual Tasks
task cs # Code style (PHP CS Fixer + Composer Normalize) task sca # Static analysis (PHPStan level 6) task t # Unit tests (PHPUnit)
Roadmap
- Trip queries and trip details
- Line information
- Route changes
- Test suite
- Extended documentation
License
This project is licensed under the MIT License -- see the LICENSE file for details.