A PHP library to consume data from the Open Rail Data initiative.
At present only Stomp (ActiveMQ) data for Network Rail is supported, but I will be adding support for Static Network Rail data (such as Schedule) and Stomp support for National Rail in the near future.
This is done via composer (packagist). Add the following to your composer.json file:
{
"require": {
"neilmcgibbon/php-open-rail-data": "0.1.0"
}
}
- Network Rail
- ActiveMQ realtime feeds (via Stomp)
- RTPPM - Real Time Passenger Performance Measurements
- VSTP - Very Short Term Planning
- Train Movements - Cancellations, Activations, Reinstatements, etc.
- TD - Train Describer events
- ActiveMQ realtime feeds (via Stomp)
###Feeds not yet supported
-
Network Rail
- ActiveMQ realtime feeds (via Stomp)
- TSR - Temporary Speed Restrictions
- Static feeds (via HTTP)
- Schedule - Schedule data
- Reference Data - Reference data
- ActiveMQ realtime feeds (via Stomp)
-
National Rail
- all feed types
Events are processed via the observer / event dispatcher pattern
To listen for Real Time Passenger Performance Measurements (RTPPM events), and then dump out the number of late trains on the "National Page" level:
Create the event listener
class ExampleEventListener
{
public function onEventReceived(RtppmEvent $event)
{
echo "Received event. National page late trains count: ";
echo $event->getNationalPage()->getPerformance()->getLateCount() . PHP_EOL;
}
}
Create the connection and start listening
$connection = new \OpenRailData\NetworkRail\Services\Stomp\Connection(
"network_rail_username",
"network_rail_password"
);
// Create the Topic.
$topic = new OpenRailData\NetworkRail\Services\Stomp\Topics\Rtppm\RtppmTopic();
// Add our event listener to the topic
$topic->addListener(new ExampleEventListener());
// Subscribe to the topic by adding the topic to the connection
$connection->addTopic($topic);
// Start listening for events, the rest is handled by our event listener :-)
$connection->listen();
And thats it!
More documentation and functionality to follow. Please also see the /examples
dir for more examples.