이 SDK를 사용하면 개발자가 PHP 프로젝트에서 GTFS 데이터를보다 쉽게 사용할 수 있습니다. 현재 정적 파일 만 지원됩니다.
작곡가를 통해이 패키지를 설치할 수 있습니다
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 파일을 읽는 데 최대 1 분이 걸릴 수 있습니다.
파일 데이터를 읽습니다
모든 파일 클래스에는 해당 파일의 모든 데이터를 읽는 메소드가 포함되어 있습니다. 일부 클래스에는 ID 또는 외국 키 필터링과 같은 자주 사용되는 쿼리에 대한 추가 도우미 방법이 포함되어 있습니다.
모든 (지원되는) 파일에 대해 하나의 PHP 클래스가 있고 해당 파일의 한 행에 포함 된 데이터에 대한 다른 클래스가 있습니다. 각 필드의 정의는 각 Getter 기능에 대해 PHPDOC에 포함되어있어 코딩에 집중할 수 있으며 사양과 코드 사이의 alt 탭에 덜 집중할 수 있습니다.
$ 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 당사는 풀 요청을 수락하지만 추가 또는 수정 사항을 논의하기 위해 먼저 문제를 만듭니다. 새로운 기능이 추가 된 경우 문제를 만들어 기능 요청을 만들 수도 있습니다.
질문에 갇혀 있다면 문제 추적기를 통해 도움을 요청하십시오.