searchVideo関数
ここからがZend_Gdataの範囲となってきます。検索用関数のsearchVideo関数を作成します。
[1]サービスオブジェクトの生成
まずはサービスクラスにあたるZend_Gdata_YouTubeクラスのオブジェクトを生成します。これはZend_Gdata_Mediaというクラスを継承しています。
Zend_Gdata_YouTube(Zend_Http_Client client, string applicationId, string clientId, string developerKey)
コンストラクタ引数は次のとおりです。本サンプルでは引数を省略しています。
| 引数 | 型 | 省略時の値 | 内容 |
| client | Zend_Http_Client | null | Googleサーバと接続する際のHTTPクライアント。 |
| applicationId | string | MyCompany-MyApp-1.0 | アプリケーションID。「社名-アプリケーション名-バージョン」の形式で指定して、Googleサービス側でどのアプリケーションから接続されたのかを一意に特定するもの。 |
| clientId | string | null | クライアントID。ログの記録やデバッグなどの際にアプリケーションを識別するもの。Developer Registrationにて登録する。 |
| developerKey | string | null | デベロッパーキー。API リクエストを行う YouTube 開発者を識別するためのもの。Developer Registrationにて登録する。 |
[2]クエリオブジェクトの取得
サービスオブジェクトであるZend_Gdata_YouTubeから、クエリオブジェクトであるZend_Gdata_YouTube_VideoQueryオブジェクトを取得します。
$query = $youtube->newVideoQuery();
上記では「$query = $youtube->newVideoQuery();」としてZend_Gdata_YouTubeオブジェクトのメンバ関数を使用しているようにみえますが、実はZend_Gdata_YouTubeにはそのような関数はありません。どういうことなのでしょうか。
実はZend_Gdata_YouTubeクラスの継承元のZend_Gdata_Mediaクラスのさらに継承元のZend_Gdataクラスのさらに継承元のZend_Gdata_Appクラス。ここに次のような関数があります。
public function __call($method, $args)
これはPHP5から追加された未定義のメソッドを実行する機能です。例えば「$obj->methodA(argA)」とあり、「methodA」が未定義だった場合。__callが引数「$method="methodA"」、「$arg="argA"」として呼び出されそこで定義された処理が実行されます。
同様に未定義の変数呼び出しについては__get、値設定については__setというものがあります。
Zend_Gdata_Appでの__callメソッドは簡単に説明すると次のような動作をしています。前提としては「->newクラス名(引数)」として呼ばれることを想定しています。
if(引数$methodが「new」で始まる文字列だった場合に){
Zend_Gdata_App_Extension_クラス名 もしくは Zend_Gdata_App_クラス名で
定義されたクラスが存在するかどうかチェック
if(クラスが存在する場合) {
そのクラスのオブジェクトを引数を与えて生成する
if(オブジェクトがZend_Gdata_App_FeedEntryParentのインスタンスである場合) {
HttpClientを設定する
}
returnオブジェクト
} else {
エラー
}
} else {
エラー
}
要するに「new クラス名(引数)」を使いやすいように実行してくれます。これで開発者はZend_Gdataにおけるお決まりのオブジェクト生成を快適に行えるようになります。
[3]クエリオブジェクトにパラメータを与える
Zend_Gdata_YouTube_VideoQueryオブジェクトにパラメータを設定します。
$query->videoQuery = $keyword; $query->orderBy = 'viewCount'; $query->MaxResults = 10;
Zend_Gdata_YouTube_VideoQueryオブジェクトにはさまざまな検索オプションが指定できます。主なものとして以下があります。
| パラメータ | 意味 | 設定可能な値 | 意味 |
| Author | 投稿者 | ユーザー指定値 | |
| FeedType | 取得するフィード | top rated | 評価の高い動画 |
| most viewed | 人気の動画 | ||
| recently featured | おすすめ | ||
| mobile | 携帯向け動画 | ||
| related | ある動画に関連づけられた動画 | ||
| responses | 別の動画へのレスポンスとして指定された動画 | ||
| comments | 動画へのコメント | ||
| Format | 動画のフォーマット | 1 | モバイル向けRTSPストリーミングURL。H.263 |
| 5 | 埋め込み型プレイヤー(SWF)へのHTTP URL | ||
| 6 | モバイル向けRTSPストリーミングURL。MPEG-4 SP | ||
| MaxResult | 取得する結果の最大件数 | ユーザー指定値 | デフォルトは25。最大で50 |
| OrderBy | 検索結果の表示順序 | relevance | デフォルト値。関連度 |
| published | 追加日 | ||
| viewCount | 再生回数 | ||
| rating | 評価 | ||
| Racy | 制限付きコンテンツを結果に含めるか | include | 含める |
| exclude | デフォルト値。除外 | ||
| StartIndex | 結果セットのうち何番目のセットから取得するか | ユーザー指定値 | |
| Time | どの期間にアップロードされた動画を検索対象にするか | today | 当日 |
| this_week | 1週間以内 | ||
| this_month | 1か月以内 | ||
| all_time | デフォルト値。全期間 | ||
| VideoQuery | 検索キーワード | ユーザー指定値 |
上のようなパラメータを使用して、Youtubeサービスにどのようなリクエストを送信するかを設定します。
