導入注意:このドキュメントでは、英語版のリビジョン 22744 の更新内容をスキップしています。 Google Data API は、Google のオンラインサービスに対するプログラマ向けのインターフェイスです。 Google data Protocol は » Atom Publishing Protocol に基づいており、クライアントアプリケーションからのデータの問い合わせ、 データの投稿、更新、削除などを標準の HTTP と Atom syndication formation で行います。 Zend_Gdata コンポーネントは PHP 5 用のインターフェイスで、Google Data に PHP からアクセスするためのものです。 Zend_Gdata コンポーネントは、Atom Publishing Protocol を実装したその他のサービスへのアクセスもサポートしています。 Google Data API についての詳細な情報は » http://code.google.com/apis/gdata/ を参照ください。 Zend_Gdata でアクセスできるサービスには次のようなものがあります。
Zend_Gdata の構造Zend_Gata は、いくつかの型のクラスを組み合わせたものです。
Google サービスの使用法Google データサービスは、Atom Publishing Protocol (APP) および Atom syndication format に基づいたサービスです。 Zend_Gdata コンポーネントを用いて APP や Google サービスを扱うには、Zend_Gdata_App や Zend_Gdata そして Zend_Gdata_Spreadsheets などのサービスクラスを使用する必要があります。 サービスクラスには、サービスからデータのフィードを取得したり 新しいエントリをフィードに挿入したり 既存のエントリを更新したり削除したりといったメソッドがあります。
注意: Zend_Gdata を用いた実際に動作するサンプルプログラムが
Zend_Gdata クラスのインスタンスの取得
Zend Framework の命名規約では、すべてのクラスは
その存在位置のディレクトリ構造に基づいた名前をつける必要があります。
たとえば Spreadsheets に関する拡張クラスは
ということで、すべてのサービスクラス
(Zend_Gdata_App、Zend_Gdata、Zend_Gdata_Spreadsheets など)
に特別なファクトリメソッドを用意するようにしました。
これを用いることで、データモデルやクエリ、
その他のクラスのインスタンスをより簡単に作成できるようになります。
このファクトリメソッドは、マジックメソッド
継承ツリー内にある各サービス用クラス内で、 適切な 'パッケージ' (ディレクトリ) を登録します。 ファクトリメソッドは、これを使用してクラスを探します。 Google Data クライアント認証ほとんどの Google Data サービスは、 個人データへのアクセスやデータの保存、削除の前に Google サーバに対する認証を要求します。 Google Data の認証用に提供される実装は AuthSub および ClientLogin の二種類があります。 Zend_Gdata ではこれら両方の方式に対するインターフェイスを用意しています。 Google Data サービスに対するその他大半の問い合わせは、 認証を必要としません。 依存性Zend_Gdata は Zend_Http_Client を用いてリクエストを google.com に送信し、結果を取得します。 ほとんどの Google Data リクエストに対する応答は Zend_Gdata_App_Feed あるいは Zend_Gdata_App_Entry クラスのサブクラスで返されます。 Zend_Gdata は、PHP アプリケーションの稼動しているホストが インターネットに直接つながっていることを想定しています。 Zend_Gdata クライアントは Google Data サーバへの接続を行います。 新しい Gdata クライアントの作成Zend_Gdata_App クラス、Zend_Gdata クラス、 あるいはそのサブクラスのひとつのオブジェクトを作成します。 各サブクラスではサービス固有のヘルパーメソッドを提供します。 Zend_Gdata_App のコンストラクタに渡すオプションの引数は Zend_Http_Client のインスタンスです。このパラメータを渡さなかった場合は、 Zend_Gdata はデフォルトの Zend_Http_Client オブジェクトを作成します。 これには、プライベートフィードにアクセスするための認証データは設定されていません。 Zend_Http_Client オブジェクトを自分で指定すると、 クライアントオブジェクトに対する設定オプションを指定できます。 Zend Framework 1.7 以降、プロトコルのバージョン管理のサポートが追加されました。 これにより、クライアントおよびサーバで新機能をサポートしつつ、 過去との互換性を保持できるようになります。 ほとんどのサービスはバージョン管理を自前で行う必要はありませんが、 Zend_Gdata のインスタンスを直接作成する場合 (サブクラスを使わない場合) は、必要なプロトコルのバージョンを指定してサーバの機能にアクセスする必要があります。 認証済みの Zend_Http_Client オブジェクトを作成する方法については、 認証のセクションも参照ください。 共通のクエリパラメータパラメータを指定することで、Zend_Gdata での問い合わせをカスタマイズできます。 クエリのパラメータは、 Zend_Gdata_Query のサブクラスを使用して指定します。 Zend_Gdata_Query クラスにはクエリパラメータを設定するメソッドが含まれ、 これを用いて GData サービスにアクセスします。 たとえば Spreadsheets のような個々のサービスでも クエリクラスを用意しており、そのサービスやフィードに合わせた独自のパラメータを定義しています。 Spreadsheets の CellQuery クラスは Cell Feed に対する問い合わせを行い、ListQuery クラスは List Feed に対する問い合わせを行います。 それぞれのフィードに対して別々のパラメータを指定できます。 GData 全体で使用できるパラメータについて、 以下で説明します。
これらの
Zend_Gdata クラスでは、 特別なゲッターメソッドおよびセッターメソッドも実装しています。 つまり、パラメータの名前をクラスの仮想的なメンバとして扱うことができます。
すべてのパラメータを消去するには resetParameters() を使用します。複数のクエリで Zend_Gdata を使いまわす場合などに便利です。
フィードの取得getFeed() を使用して、指定した URI からフィードを取得します。 この関数は、getFeed の二番目の引数で指定したクラスのインスタンスを返します。 このクラスのデフォルトは Zend_Gdata_Feed です。
この後の節で、各 Google Data サービス用のヘルパークラス固有の関数について説明します。これらの関数により、 対応するサービスにあわせた適切な URI からフィードを取得できるようになります。 複数ページのフィードの扱い方多くのエントリが含まれるフィードを取得した場合、 そのフィードはいくつかの「ページ」に分かれていることがあるかもしれません。 そのような場合には、各ページには次のページへのリンクが含まれることになります。 このリンクにアクセスするには getLink('next') を使用します。 この例は、フィードの次のページを取得する方法を示すものです。
もしこのようにページに分かれているのが気に入らない場合は、 フィードの最初のページを Zend_Gdata_App::retrieveAllEntriesForFeed() に渡しましょう。そうすると、 すべてのエントリの内容をひとつのフィードにまとめてくれます。 この関数の使用法を、次の例で示します。
大きなフィードに対してこの関数をコールすると、 処理に時間がかかるということに注意しましょう。 set_time_limit() で PHP の実行時間制限を拡大する必要があるかもしれません。 フィードやエントリ内のデータの操作フィードを取得したら、次はそのデータを読み込んだり そこに含まれるエントリを読み込んだりする番です。 これには各データモデルクラスのアクセス用メソッドを使用するか、 あるいはマジックメソッドを使用します。以下に例を示します。
エントリの更新エントリを取得したら、それを更新してサーバに保存できます。以下に例を示します。
Google サーバへのエントリの送信Zend_Gdata オブジェクトの関数 insertEntry() にアップロードしたいデータを指定し、 新しいエントリを Google Data サービスに保存します。 各サービス用のデータモデルクラスを使用して適切なエントリを作成し、 Google のサービスに投稿できます。 insertEntry() 関数には、 Zend_Gdata_App_Entry の子クラスに投稿内容を格納して渡します。 このメソッドは Zend_Gdata_App_Entry の子クラスを返します。 これは、サーバから返されたエントリの状態を表します。 もうひとつの方法として、そのエントリの内容を XML 構造の文字列として作成して insertEntry() 関数に渡すこともできます。
エントリを送信するには、認証済みの Zend_Http_Client を使用する必要があります。これは、 Zend_Gdata_AuthSub クラスあるいは Zend_Gdata_ClientLogin クラスを使用して作成します。 Google サーバからのデータの削除方法 1: Zend_Gdata オブジェクトの関数 delete() に削除したいエントリを指定して、Google Data サービスからデータを削除します。 フィードエントリの編集用 URL を delete() メソッドに渡します。 方法 2: あるいは、Google サービスから取得したエントリに対して $entry->delete() をコールすることもできます。
エントリを削除するには、認証済みの Zend_Http_Client を使用する必要があります。これは、 Zend_Gdata_AuthSub クラスあるいは Zend_Gdata_ClientLogin クラスを使用して作成します。
|
|