コンテンツにスキップ

PHP GTFS-realtimeの言語バインディング

PHPバージョン

GTFS-realtime ProtocolBuffer 仕様から生成された PHP クラスを提供します。 これらのクラスを使用すると、バイナリの ProtocolBuffer GTFS-realtime データフィードをパースして PHP オブジェクトに変換することができます。

他の言語でのバインディングについては、the gtfs-realtime-bindings project を参照してください。

非推奨

2019年2月現在、公式のgoogle-protobufGoogle protocツールはproto2ファイルをサポートしていません。 そのため、Googleプロトコルバッファツールにproto2ファイルの公式サポートが実装されるまで、PHPバインディングを非推奨とします*。

依存関係の追加

gtfs-realtime-bindings-phpクラスを自分のプロジェクトで使用するには、 まずPackagist Composer パッケージをインストールする必要があります。 そのためには、composer.jsonファイルに依存関係を追加してください。

"require": {
  "google/gtfs-realtime-bindings": "x.y.z"
}

ここでx.y.zは最新のリリース・バージョンです。

PHPバージョン

次に、Composer の依存関係を更新します。

composer update

コード例

次のコードでは、特定のURLからGTFS-realtimeデータフィードをダウンロードし、それをFeedMessage(GTFS-realtimeスキーマのルートタイプ)として解析し、結果を反復処理する様子を示しています。

require_once 'vendor/autoload.php';

use transit_realtime\FeedMessage;

$data = file_get_contents("URL OF YOUR GTFS-REALTIME SOURCE GOES HERE");
$feed = new FeedMessage();
$feed->parse($data);
foreach ($feed->getEntityList() as $entity) {
  if ($entity->hasTripUpdate()) {
    error_log("trip: " . $entity->getId());
  }
}

gtfs-realtime.proto から生成される PHP クラスの命名規則についての詳細は、gtfs-realtime.php のソースファイルを参照してください。