bitartist/vvophp

PHP library for accessing real-time public transport data from the VVO (Verkehrsverbund Oberelbe) network

Maintainers

Package info

github.com/B0bbyD0llar/vvophp

Issues

pkg:composer/bitartist/vvophp

Statistics

Installs: 8 072

Dependents: 0

Suggesters: 0

Stars: 0

0.1.3 2023-01-02 17:14 UTC

This package is not auto-updated.

Last update: 2026-03-10 08:27:59 UTC


README

PHP Version License: MIT PHPStan Level 6

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:

bitartist/vvophp-demo

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.