Dieser SDK erleichtert Entwicklern, GTFS -Daten in ihren PHP -Projekten zu verwenden. In diesem Moment werden nur statische Dateien unterstützt.
Sie können dieses Paket über den Komponisten installieren
composer require trafiklab/gtfs-php-sdk
Öffnen einer GTFS -Datei
Sie können entweder eine lokale GTFS -ZIP -Datei laden oder sie über HTTP herunterladen
$ gtfsArchive = GtfsArchive:: createFromPath ( " gtfs.zip " );
$ gtfsArchive = GtfsArchive:: createFromUrl ( " http://example.com/gtfs.zip " );Optional können Sie eine GTFS -ZIP -Datei nur dann herunterladen, wenn sie sich seit dem letzten Abrufen geändert hat. Dies ist nützlich, wenn Sie versuchen, GTFS -Abrufen zu automatisieren, die in einer Datenbank gespeichert werden müssen, ohne dass dieselben Daten jedes Mal ständig umschreiben müssen. Die folgenden HTTP -Header werden verwendet:
Die meisten Agenturen bieten einen Last-modifizierten Header, aber wenn es nicht vorhanden ist, ist ETAG die beste Route, um zu gehen. Wenn ETAG aus irgendeinem Grund auch nicht bereitgestellt wird, wird es einfach normal so, als ob Sie die ursprüngliche Methode GTFSARCHIVE :: CREATEFROMURL () verwenden würden.
$ gtfsArchive = GtfsArchive:: createFromUrlIfModified (
" http://example.com/gtfs.zip " ,
" Wed, 10 Jun 2020 15:56:14 GMT " ,
" 99fa-5a7bce236c526 "
);Wenn Sie zunächst keinen ETAG- oder Last-modifizierten Wert haben, lassen Sie sie einfach heraus und die Methode wird für Sie abgerufen.
if ( $ gtfsArchive = GtfsArchive:: createFromUrlIfModified ( " http://example.com/gtfs.zip " ) {
// Get Methods return null if GTFS Url does not contain the specified Header: ETag, Last-Modified.
$ lastModified = $ gtfsArchive -> getLastModified (); // Wed, 10 Jun 2020 15:56:14 GMT | null
$ eTag = $ gtfsArchive -> getETag (); // "99fa-5a7bce236c526" | null
// You can get the Last-Modified datetime PHP Object (Useful for storing in databases) by doing the following:
$ datetime = $ gtfsArchive ->getLastModifiedDateTime() // DateTime Object | null
// Or Convert it back to a String using the standard Last-Modified HTTP header format.
if ( $ datetime ) {
$ lastModified = GtfsArchive:: getLastModifiedFromDateTime ( $ datetime ); // Wed, 10 Jun 2020 15:56:14 GMT
}
}
Dateien werden in ein temporäres Verzeichnis (/tmp/gtfs/) extrahiert und aufgeräumt, wenn das GTFSarchive -Objekt zerstört wird. Sie können $gtfsArchive->deleteUncompressedFiles() nennen, um die unkomprimierten Dateien manuell zu entfernen.
Lesen einer Datei
$ agencyTxt = $ gtfsArchive -> getAgencyFile (); // read agency.txt
$ calendarTxt = $ gtfsArchive -> getCalendarFile (); // read calendar.txt
$ routesTxt = $ gtfsArchive -> getRoutesFile (); // read routes.txt
$ stopTimesTxt = $ gtfsArchive -> getStopTimesFile (); // read stop_times.txt
. . . Alle Dateien sind faul geladen und zwischengespeichert. Dies bedeutet, dass Daten erst nach dem Aufrufen einer Methode wie getStopTimesFile() geladen werden. Denken Sie daran, dass es eine Weile dauern kann, dass die Daten zum ersten Mal lesen. Es kann bis zu einer Minute dauern, um eine große stop_times.txt -Datei zu lesen.
Dateidaten lesen
Jede Dateiklasse enthält eine Methode zum Lesen aller Daten in dieser Datei. Einige Klassen enthalten zusätzliche Helfermethoden für häufig verwendete Abfragen wie die Filterung durch eine ID oder einen Fremdkasten.
Es gibt eine PHP -Klasse für jede (unterstützte) Datei und eine andere Klasse für die in einer Zeile dieser Datei enthaltenen Daten. Die Definition jedes Feldes ist im PHPDOC für jede Getter-Funktion enthalten, sodass Sie sich auf das Codieren konzentrieren können, und weniger auf Alt-Tabbing zwischen Spezifikation und Code.
$ stopTimesTxt = $ gtfsArchive -> getStopTimesFile (); // The file is represented by a StopTimesFile object
$ allStopTimes = $ stopTimesTxt -> getStopTimes (); // a method like this is always available
$ stopTimesForStopX = $ stopTimesTxt -> getStopTimesForStop ( $ stopId ); // this is a helper method for foreign keys
$ stopTime = $ allStopTimes [ 0 ]; // Get the first row
$ headsign = $ stopTime -> getStopHeadsign (); // One row of data is represented by a StopTime object Wir akzeptieren Pull -Anfragen, erstellen jedoch zuerst ein Problem, um die Hinzufügung oder Fix zu besprechen. Wenn Sie eine neue Funktion angezeigt möchten, können Sie auch eine Funktionsanforderung erstellen, indem Sie ein Problem erstellen.
Wenn Sie mit einer Frage festhalten, können Sie sich gerne Hilfe durch den Problem Tracker stellen.