Programmer's Reference Guide
| Zend_Service_Audioscrobbler(日本語) |
Zend_Service_Delicious(日本語)
導入
Zend_Service_Delicious は、 » del.icio.us の XML および JSON ウェブサービスを使用するためのシンプルな API です。 このコンポーネントによって、del.icio.us への投稿のうち、 権限を持っているものについての読み書きが可能になります。 全ユーザの公開データへの読み込み専用のアクセスも可能です。
投稿の取得
Zend_Service_Delicious には、投稿を取得するメソッドとして getPosts()、 getRecentPosts() および getAllPosts() の三種類があります。 これらはすべて Zend_Service_Delicious_PostList のインスタンスを返します。ここに、取得したすべての投稿が含まれます。
- /**
- * 引数にマッチする投稿を取得する。日付や 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);
Zend_Service_Delicious_PostList
Zend_Service_Delicious のメソッド getPosts()、 getAllPosts()、 getRecentPosts() および getUserPosts() が、このクラスのインスタンスを返します。
データへのアクセスを簡単に行うため、このクラスは
Countable、Iterator および
ArrayAccess の三つのインターフェイスを実装しています。
例2 投稿一覧へのアクセス
注意: メソッド ArrayAccess::offsetSet() および ArrayAccess::offsetUnset() は、この実装では例外をスローします。つまり、 unset($posts[0]); や
$posts[0] = 'A';といったコードを書くと例外が発生するということです。 というのも、これらのプロパティは読み込み専用だからです。
投稿一覧オブジェクトには、二種類のフィルタリング機能が組み込まれています。 タグによるフィルタリングと、URL によるフィルタリングです。
例3 タグの指定による投稿一覧のフィルタリング
特定のタグで投稿を絞り込むには、 withTags() を使用します。 ひとつのタグでだけ絞り込みを行う際に便利なように、 withTag() も用意されています。
例4 URL の指定による投稿一覧のフィルタリング
指定した正規表現にマッチする URL で投稿を絞り込むには withUrl() メソッドを使用します。
投稿の編集
例5 投稿の編集
- $delicious = new Zend_Service_Delicious('ユーザ名', 'パスワード');
- $posts = $delicious->getPosts();
- // タイトルを設定します
- $posts[0]->setTitle('新しいタイトル');
- // 変更を保存します
- $posts[0]->save();
例6 メソッドコールの連結
すべての設定用メソッドは post オブジェクトを返すので、 「流れるようなインターフェイス」を使用してメソッドコールを連結できます。
- $delicious = new Zend_Service_Delicious('ユーザ名', 'パスワード');
- $posts = $delicious->getPosts();
- $posts[0]->setTitle('新しいタイトル')
- ->setNotes('新しいメモ')
- ->save();
投稿の削除
投稿を削除する方法は二通りあります。 投稿の URL を指定するか、post オブジェクトの delete() メソッドを実行するかのいずれかです。
例7 投稿の削除
- $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() メソッドをコールします。
例8 投稿の追加
- $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();
タグ
例9 タグ
- $delicious = new Zend_Service_Delicious('ユーザ名', 'パスワード');
- // すべてのタグを取得します
- // タグ ZF の名前を zendFramework に変更します
- $delicious->renameTag('ZF', 'zendFramework');
バンドル
公開データ
del.icio.us のウェブ API を使用すると、全ユーザの公開データにアクセスできるようになります。
| 名前 | 説明 | 返り値の型 |
|---|---|---|
| getUserFans() | あるユーザのファンを取得します | Array |
| getUserNetwork() | あるユーザのネットワークを取得します | Array |
| getUserPosts() | あるユーザの投稿を取得します | Zend_Service_Delicious_PostList |
| getUserTags() | あるユーザのタグを取得します | Array |
注意: これらのメソッドを使用するだけなら、 Zend_Service_Delicious オブジェクトの作成時に ユーザ名とパスワードを指定する必要はありません。
例11 公開データの取得
公開投稿
公開投稿を getUserPosts() メソッドで取得すると、 Zend_Service_Delicious_PostList オブジェクトが返されます。ここには Zend_Service_Delicious_SimplePost オブジェクトが含まれ、 その中には URL やタイトル、メモ、タグといった投稿に関する基本情報が含まれます。
| 名前 | 説明 | 返り値の型 |
|---|---|---|
| getNotes() | 投稿のメモを返します | String |
| getTags() | 投稿のタグを返します | Array |
| getTitle() | 投稿のタイトルを返します | String |
| getUrl() | 投稿の URL を返します | String |
HTTP クライアント
Zend_Service_Delicious は、Zend_Rest_Client
を使用して del.icio.us ウェブサービスへの HTTP リクエストを作成します。
Zend_Service_Delicious が使用する HTTP
クライアントを変更するには、Zend_Rest_Client
の HTTP クライアントを変更する必要があります。
例12 Zend_Rest_Client の HTTP クライアントの変更
- $myHttpClient = new My_Http_Client();
- Zend_Rest_Client::setHttpClient($myHttpClient);
Zend_Service_Delicious で複数のリクエストを作成する際に それを高速化するなら、接続をキープするように HTTP クライアントを設定するとよいでしょう。
例13 HTTP クライアントを、接続を保持し続けるように設定する
- 'keepalive' => true
- ));
注意: Zend_Service_Delicious オブジェクトを作成する際に、 Zend_Rest_Client の SSL トランスポートは
'ssl'と設定されます。デフォルトの'ssl2'ではありません。これは、del.icio.us 側の問題で、'ssl2'を使用するとリクエストの処理に時間がかかる (ほぼ 2 秒くらい) ためです。
| Zend_Service_Audioscrobbler(日本語) |
Select a Version
Languages Available
Components
Search the Manual
Navigation
- プログラマ向けリファレンスガイド
- プログラマ向けリファレンスガイド
- Zend Framework リファレンス
- Zend_Service
- 導入
- Zend_Service_Akismet(日本語)
- Zend_Service_Amazon(日本語)
- Zend_Service_Amazon_Ec2(日本語)
- Zend_Service_Amazon_Ec2: Instances
- Zend_Service_Amazon_Ec2: Windows Instances
- Zend_Service_Amazon_Ec2: Reserved Instances
- Zend_Service_Amazon_Ec2: CloudWatch Monitoring
- Zend_Service_Amazon_Ec2: Amazon Machine Images (AMI)
- Zend_Service_Amazon_Ec2: Elastic Block Storage (EBS)
- Zend_Service_Amazon_Ec2: Elastic IP Addresses
- Zend_Service_Amazon_Ec2: Keypairs(日本語)
- Zend_Service_Amazon_Ec2:リージョンおよび利用可能ゾーン
- Zend_Service_Amazon_Ec2: Security Groups
- Zend_Service_Amazon_S3
- Zend_Service_Amazon_Sqs
- Zend_Service_Audioscrobbler(日本語)
- Zend_Service_Delicious(日本語)
- Zend_Service_DeveloperGarden
- Zend_Service_Ebay
- Zend_Service_Ebay_Finding
- Zend_Service_Flickr(日本語)
- Zend_Service_LiveDocx
- Zend_Service_Nirvanix(日本語)
- Zend_Service_ReCaptcha(日本語)
- Zend_Service_ShortUrl
- Zend_Service_Simpy(日本語)
- Zend_Service_SlideShare(日本語)
- Zend_Service_StrikeIron(日本語)
- Zend_Service_StrikeIron: バンドルされているサービス
- Zend_Service_StrikeIron: 応用編
- Zend_Service_Technorati(日本語)
- Zend_Service_Twitter
- Zend_Service_WindowsAzure
- Zend_Service_WindowsAzure_Storage_Blob
- Zend_Service_WindowsAzure_Diagnostics_Manager
- Zend_Service_WindowsAzure_Storage_Queue
- Zend_Service_WindowsAzure_Storage_Table
- Zend_Service_Yahoo(日本語)
