SDK ini memudahkan pengembang untuk menggunakan data GTFS dalam proyek PHP mereka. Pada saat ini, hanya file statis yang didukung.
Anda dapat menginstal paket ini melalui komposer
composer require trafiklab/gtfs-php-sdk
Membuka file GTFS
Anda dapat memuat file zip GTFS lokal, atau Anda dapat mengunduhnya melalui http
$ gtfsArchive = GtfsArchive:: createFromPath ( " gtfs.zip " );
$ gtfsArchive = GtfsArchive:: createFromUrl ( " http://example.com/gtfs.zip " );Secara opsional, Anda dapat memilih untuk mengunduh file zip GTFS hanya jika telah berubah sejak pengambilan terakhir. Ini berguna ketika mencoba mengotomatisasi pengambilan GTFS yang perlu disimpan dalam database, tanpa terus -menerus menulis ulang data yang sama setiap kali. Header HTTP berikut digunakan:
Sebagian besar agensi memberikan header yang dimodifikasi terakhir, tetapi jika tidak ada, Etag adalah rute terbaik untuk pergi. Jika karena alasan tertentu Etag juga tidak disediakan, itu hanya akan berlanjut secara normal seolah -olah Anda menggunakan metode GTFSARCHIVE :: createFromurl () asli.
$ gtfsArchive = GtfsArchive:: createFromUrlIfModified (
" http://example.com/gtfs.zip " ,
" Wed, 10 Jun 2020 15:56:14 GMT " ,
" 99fa-5a7bce236c526 "
);Jika Anda tidak memiliki nilai ETAG atau yang dimodifikasi terakhir, cukup tinggalkan dan metode ini akan mengambilnya untuk Anda.
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
}
}
File diekstraksi ke direktori sementara (/TMP/GTFS/), dan dibersihkan ketika objek GTFSArchive dirusak. Anda dapat menghubungi $gtfsArchive->deleteUncompressedFiles() untuk secara manual menghapus file yang tidak terkompresi.
Membaca file
$ 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
. . . Semua file malas dimuat dan di -cache. Ini berarti bahwa data hanya dimuat setelah memanggil metode seperti getStopTimesFile() . Perlu diingat bahwa di dalam dapat memakan waktu beberapa saat untuk membaca data untuk pertama kalinya. Butuh waktu hingga satu menit untuk membaca file stop_times.txt besar.
Membaca data file
Setiap kelas file berisi metode untuk membaca semua data dalam file itu. Beberapa kelas berisi metode pembantu tambahan untuk pertanyaan yang sering digunakan seperti penyaringan oleh ID atau kunci asing.
Ada satu kelas PHP untuk setiap file (yang didukung), dan kelas lain untuk data yang terkandung dalam satu baris file itu. Definisi masing-masing bidang terkandung dalam PHPDOC untuk setiap fungsi Getter, memungkinkan Anda untuk fokus pada pengkodean, dan lebih sedikit pada alt-tabbing antara spesifikasi dan kode.
$ 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 Kami menerima permintaan tarik, tetapi harap buat masalah terlebih dahulu untuk membahas penambahan atau perbaikan. Jika Anda ingin melihat fitur baru ditambahkan, Anda juga dapat membuat permintaan fitur dengan membuat masalah.
Jika Anda terjebak dengan pertanyaan, jangan ragu untuk meminta bantuan melalui pelacak masalah.