Zend_Service_Delicious は、
del.icio.us
の XML および JSON ウェブサービスを使用するためのシンプルな API です。
このコンポーネントによって、del.icio.us への投稿のうち、
権限を持っているものについての読み書きが可能になります。
全ユーザの公開データへの読み込み専用のアクセスも可能です。
Zend_Service_Delicious には、投稿を取得するメソッドとして
getPosts()、getRecentPosts()
および getAllPosts() の三種類があります。
これらはすべて Zend_Service_Delicious_PostList
のインスタンスを返します。ここに、取得したすべての投稿が含まれます。
<?php /** * 引数にマッチする投稿を取得する。日付や url を省略した場合は、直近の日付を使用する * * @param string $tag オプションで、タグによる絞込みを行う * @param Zend_Date $dt オプションで、日付による絞込みを行う * @param string $url オプションで、url による絞込みを行う * @return Zend_Service_Delicious_PostList */ public function getPosts($tag = null, $dt = null, $url = null); /** * 直近の投稿を取得する * * @param string $tag オプションで、タグによる絞込みを行う * @param string $count 返す投稿の最大数 (デフォルトは 15) * @return Zend_Service_Delicious_PostList */ public function getRecentPosts($tag = null, $count = 15); /** * すべての投稿を取得する * * @param string $tag オプションで、タグによる絞込みを行う * @return Zend_Service_Delicious_PostList */ public function getAllPosts($tag = null); ?>
データへのアクセスを簡単に行うため、このクラスは
Countable、Iterator および
ArrayAccess の三つのインターフェイスを実装しています。
例 29.14. 投稿一覧へのアクセス
<?php
$delicious = new Zend_Service_Delicious('ユーザ名', 'パスワード');
$posts = $delicious->getAllPosts();
// 投稿数を数えます
echo count($posts);
// 投稿を順次処理します
foreach ($posts as $post) {
echo "--\n";
echo "タイトル: {$post->getTitle()}\n";
echo "URL: {$post->getUrl()}\n";
}
// 配列風のアクセス方式で投稿を取得します
echo $posts[0]->getTitle();
?>
![]() |
注意 |
|---|---|
メソッド |
投稿を削除する方法は二通りあります。
投稿の URL を指定するか、post オブジェクトの
delete() メソッドを実行するかのいずれかです。
例 29.17. 投稿の削除
<?php
$delicious = new Zend_Service_Delicious('ユーザ名', 'パスワード');
// URL を指定します
$delicious->deletePost('http://framework.zend.com');
// あるいは、post オブジェクトのメソッドをコールします
$posts = $delicious->getPosts();
$posts[0]->delete();
// deletePost() を使用する、もうひとつの方法
$delicious->deletePost($posts[0]->getUrl());
?>
投稿を追加するには createNewPost() メソッドをコールする必要があります。
このメソッドは Zend_Service_Delicious_Post オブジェクトを返します。
投稿を編集したら、それを del.icio.us のデータベースに保存するために
save() メソッドをコールします。
例 29.18. 投稿の追加
<?php
$delicious = new Zend_Service_Delicious('ユーザ名', 'パスワード');
// 新しい投稿を作成し、保存します (メソッドコールの連結を使用します)
$delicious->createNewPost('Zend Framework', 'http://framework.zend.com')
->setNotes('Zend Framework Homepage')
->save();
// 新しい投稿を作成し、保存します (メソッドコールの連結を使用しません)
$newPost = $delicious->createNewPost('Zend Framework', 'http://framework.zend.com');
$newPost->setNotes('Zend Framework Homepage');
$newPost->save();
?>
del.icio.us のウェブ API を使用すると、全ユーザの公開データにアクセスできるようになります。
表 29.10. 公開データを取得するためのメソッド
| 名前 | 説明 | 返り値の型 |
|---|---|---|
getUserFans() |
あるユーザのファンを取得します | Array |
getUserNetwork() |
あるユーザのネットワークを取得します | Array |
getUserPosts() |
あるユーザの投稿を取得します | Zend_Service_Delicious_PostList |
getUserTags() |
あるユーザのタグを取得します | Array |
![]() |
注意 |
|---|---|
これらのメソッドを使用するだけなら、
|
例 29.21. 公開データの取得
<?php
// ユーザ名とパスワードは不要です
$delicious = new Zend_Service_Delicious();
// someUser のファンを取得します
print_r($delicious->getUserFans('someUser'));
// someUser のネットワークを取得します
print_r($delicious->getUserNetwork('someUser'));
// someUser のタグを取得します
print_r($delicious->getUserTags('someUser'));
?>
公開投稿を getUserPosts() メソッドで取得すると、
Zend_Service_Delicious_PostList オブジェクトが返されます。ここには
Zend_Service_Delicious_SimplePost オブジェクトが含まれ、
その中には URL やタイトル、メモ、タグといった投稿に関する基本情報が含まれます。
Zend_Service_Delicious は、Zend_Rest_Client
を使用して del.icio.us ウェブサービスへの HTTP リクエストを作成します。
Zend_Service_Delicious が使用する HTTP
クライアントを変更するには、Zend_Rest_Client
の HTTP クライアントを変更する必要があります。
例 29.22. Zend_Rest_Client の HTTP クライアントの変更
<?php $myHttpClient = new My_Http_Client(); Zend_Rest_Client::setHttpClient($myHttpClient); ?>
Zend_Service_Delicious で複数のリクエストを作成する際に
それを高速化するなら、接続をキープするように HTTP クライアントを設定するとよいでしょう。
例 29.23. HTTP クライアントを、接続を保持し続けるように設定する
<?php
Zend_Rest_Client::getHttpClient()->setConfig(array(
'keepalive' => true
));
?>
![]() |
注意 |
|---|---|
|