هذا SDK يسهل على المطورين استخدام بيانات GTFS في مشاريع PHP الخاصة بهم. في هذه اللحظة ، يتم دعم الملفات الثابتة فقط.
يمكنك تثبيت هذه الحزمة من خلال الملحن
composer require trafiklab/gtfs-php-sdk
فتح ملف GTFS
يمكنك إما تحميل ملف GTFS zip المحلي ، أو يمكنك تنزيله عبر http
$ gtfsArchive = GtfsArchive:: createFromPath ( " gtfs.zip " );
$ gtfsArchive = GtfsArchive:: createFromUrl ( " http://example.com/gtfs.zip " );اختياريًا ، يمكنك اختيار تنزيل ملف GTFS zip فقط إذا كان قد تغير منذ الاسترجاع الأخير. يكون هذا مفيدًا عند محاولة أتمتة استردادات GTFS التي تحتاج إلى تخزينها داخل قاعدة بيانات ، دون إعادة كتابة البيانات نفسها باستمرار في كل مرة. يتم استخدام رؤوس HTTP التالية:
توفر معظم الوكالات رأسًا معدلًا أخيراً ، ولكن إذا لم يكن موجودًا ، فإن ETAG هو أفضل طريق للذهاب. إذا لم يتم توفير ETAG لسبب ما ، فسيستمر ذلك بشكل طبيعي كما لو كنت تستخدم طريقة GTFSarchive الأصلية :: createfromurl ().
$ gtfsArchive = GtfsArchive:: createFromUrlIfModified (
" http://example.com/gtfs.zip " ,
" Wed, 10 Jun 2020 15:56:14 GMT " ,
" 99fa-5a7bce236c526 "
);إذا لم يكن لديك قيمة ETAG أو القيمة المعدلة الأخيرة لتبدأ بها ، فما عليك سوى تركها وستسترجع الطريقة لك.
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
}
}
يتم استخراج الملفات إلى دليل مؤقت (/TMP/GTFS/) ، وتنظيفه عند تدمير الكائن GTFSarchive. يمكنك استدعاء $gtfsArchive->deleteUncompressedFiles() لإزالة الملفات غير المضغوطة يدويًا.
قراءة ملف
$ 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
. . . جميع الملفات محملة كسول وتخزين مؤقت. هذا يعني أن البيانات يتم تحميلها فقط بعد استدعاء طريقة مثل getStopTimesFile() . ضع في اعتبارك أنه يمكن أن يستغرق بعض الوقت لقراءة البيانات لأول مرة. قد يستغرق الأمر ما يصل إلى دقيقة لقراءة ملف stop_times.txt كبير.
قراءة بيانات الملف
كل فئة ملفات تحتوي على طريقة لقراءة جميع البيانات في هذا الملف. تحتوي بعض الفئات على طرق مساعدة إضافية للاستعلامات المستخدمة بشكل متكرر مثل التصفية بواسطة معرف أو مفتاح خارجي.
هناك فئة PHP واحدة لكل ملف (مدعوم) ، وفئة أخرى للبيانات الموجودة في صف واحد من هذا الملف. يوجد تعريف كل حقل في PHPDOC لكل وظيفة getter ، مما يسمح لك بالتركيز على الترميز ، وأقل على التخلص من المواصفات والرمز.
$ 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 نحن نقبل طلبات السحب ، ولكن يرجى إنشاء مشكلة أولاً لمناقشة الإضافة أو الإصلاح. إذا كنت ترغب في مشاهدة ميزة جديدة ، فيمكنك أيضًا إنشاء طلب ميزة عن طريق إنشاء مشكلة.
إذا كنت عالقًا مع سؤال ، فلا تتردد في طرح المساعدة من خلال تعقب المشكلات.