Services_Ebay は多くの小さなクラスで構成されています。これにより、 使用するコードの量を少なくすることができます。 あなたのアプリケーションで実際に使用する機能のコードのみが読み込まれ、 パースされます。
ここでは、提供されているさまざまな型のオブジェクトについて、 どのような場合にそれを使用するのかを簡単に説明します。
Services_Ebay クラスは次の目的で使用します。
ファクトリメソッドの提供
Services_Ebay は、Services_Ebay に含まれるその他すべてのクラスの 読み込みとインスタンス化のためのメソッドを提供します。 つまり、あなた自身がインクルードして インスタンスを作成すべきクラスはこれだけだということです。 ファクトリメソッドに該当するのは loadApiCall()、getSession() および loadModel() です。
定数の提供
このクラスではまた、定数をいくつか定義しています。 たとえばアプリケーションで必要となる eBay サイト ID などです。 定数に含まれるのは Services_Ebay::SITEID_ID、 Services_Ebay::AUTH_TYPE_TOKEN あるいは Services_Ebay::FEEDBACK_BRIEF です。 eBay ウェブサービスが XML タグに整数値を期待している場面ではいつも、 Services_Ebay は該当する定数を提供しようとします。
静的なヘルパメソッド群の提供
このクラスでは、いくつかのヘルパメソッドが定義されています。 これは、getAvailableApiCalls() のように静的にコールすることができます。
プロキシクラスとしての動作
最も重要な使用法は、Services_Ebay は API コールのプロキシクラスとして動作することです。 つまり、このクラスのメソッドをコールすると、 それが適切なコールオブジェクトにリダイレクトされるということです。
Services_Ebay_Session クラスは、 通信する XML ストリームのシリアライズ/アンシリアライズを処理するために使用します。 さらに、必要となる HTTP ヘッダを作成し、ユーザ認証の処理も行います。
おそらく、あなたはセッションを常に間接的に使用することになるでしょう。 つまり、まず最初にセッションを Services_Ebay オブジェクトにわたし、Services_Ebay オブジェクトがそれを使用して API をコールするということです。
例 67-1セッションクラスの使用
|
Services_Ebay_Transport クラスの使用目的は、 eBay ウェブサービスへの接続を確立すること、 および Services_Ebay_Session が作成した生データの送受信を行うことです。
理屈上はさまざまなトランスポートクラスが存在してしかるべきです。 しかし、PHP のストリーム関数やいくつかの SSL ライブラリのバグのせいで、 実際に動作するトランスポートクラスは Services_Ebay_Transport_Curl のみとなっています。これは PHP の curl 拡張モジュールを使用します。
Services_Ebay_Call クラスは eBay ウェブサービスが提供する API コールに関する情報を含みます。 各 API コールはオブジェクトにカプセル化され、 そのオブジェクトには API コールに関する情報が含まれます。 例えば、使用する XML タグや期待する返り値などです。
このオブジェクトには二通りの使用法があります。
インスタンスを直接作成し (Services_Ebay のファクトリメソッドを使用するのがベストです)、すべてのパラメータを渡して Services_Ebay_Call::call() を起動します。このメソッドにセッションオブジェクトを渡します。
Services_Ebay をプロキシオブジェクトとして使用します。 PHP5 の新しい機能であるオブジェクトのオーバーロードを使用して、 すべての操作が可能です。
Call オブジェクトを直接操作するより、Services_Ebay をプロキシとして使用する方法を推奨します。 Services_Ebay はクラスのインスタンスを作成し、 パラメータを渡して Call オブジェクトの call メソッドを起動します。
Services_Ebay_Model クラスは、eBay のサーバに保存されたリモートデータをローカルで保持するコンテナとして動作します。 例えば、Services_Ebay::getItem() をコールすると、 このメソッドは Services_Ebay_Model_Item のインスタンスを返します。ここには、商品についての情報のほかに Services_Ebay_Model_Item::addToDescription() のようなヘルパメソッドが含まれ、新しい API コールをカプセル化します。
現在 Services_Ebay が提供しているモデルクラスは accounts, disputes (single dispute and a list of disputes), user feedback (summary and a single feedback entry), items and list of items, MyeBay, orders, preferences, search results, shipments, eBay stores, transactions および users です。
Services_Ebay_Cache クラスは、eBay ウェブサービスから取得した情報をローカルにキャッシュします。 あなたのスクリプトには一切手を入れる必要はありません。 任意のモデル型についてキャッシュのインスタンスを登録すると、 Services_Ebay は、時間のかかる API コールの前にキャッシュを検索するようになります。
キャッシュクラスは非常に高いレベルでの抽象化を行っており、 新しいキャッシュコンテナを作成することが可能です。そのため、 データベースでも共有メモリでも、お望みの場所にデータを保存することができます。 現在は、使用できるコンテナは一種類だけです。 これはデータをローカルのファイルシステムに保存します。
キャッシュがまだ有効かどうかを調べるには Services_Ebay_Cache_ExpiryCheck のインスタンスを使用します。これを使用すると、 オークションの終了時刻の少し前に期限切れとなるような "かしこい" キャッシュを作成することができます。