Zend_Service_Delicious is simple API for using del.icio.us
XML and JSON web services. This component gives you read-write access to posts at del.icio.us
if you provide credentials. It also allows read-only access to public data of all users.
Zend_Service_Delicious provides three methods for retrieving posts: getPosts(),
getRecentPosts() and getAllPosts(). All of these
methods return an instance of Zend_Service_Delicious_PostList, which
holds all retrieved posts.
<?php /** * Get posts matching the arguments. If no date or url is given, most recent date will be used. * * @param string $tag Optional filtering by tag * @param Zend_Date $dt Optional filtering by date * @param string $url Optional filtering by url * @return Zend_Service_Delicious_PostList */ public function getPosts($tag = null, $dt = null, $url = null); /** * Get recent posts * * @param string $tag Optional filtering by tag * @param string $count Maximal number of posts to be returned (default 15) * @return Zend_Service_Delicious_PostList */ public function getRecentPosts($tag = null, $count = 15); /** * Get all posts * * @param string $tag Optional filtering by tag * @return Zend_Service_Delicious_PostList */ public function getAllPosts($tag = null); ?>
For easier data access this class implements the Countable, Iterator, and
ArrayAccess interfaces.
Przykład 29.14. Accessing post lists
<?php
$delicious = new Zend_Service_Delicious('username', 'password');
$posts = $delicious->getAllPosts();
// count posts
echo count($posts);
// iterate over posts
foreach ($posts as $post) {
echo "--\n";
echo "Title: {$post->getTitle()}\n";
echo "Url: {$post->getUrl()}\n";
}
// get post using array access
echo $posts[0]->getTitle();
?>
![]() |
Notatka |
|---|---|
The |
Przykład 29.15. Post editing
<?php
$delicious = new Zend_Service_Delicious('username', 'password');
$posts = $delicious->getPosts();
// set title
$posts[0]->setTitle('New title');
// save changes
$posts[0]->save();
?>
Przykład 29.16. Method call chaining
Every setter method returns the post object so that you can chain method calls using a fluent interface.
<?php
$delicious = new Zend_Service_Delicious('username', 'password');
$posts = $delicious->getPosts();
$posts[0]->setTitle('New title')
->setNotes('New notes')
->save();
?>
There are two ways to delete a post, by specifying the post URL or by calling the delete()
method upon a post object.
Przykład 29.17. Deleting posts
<?php
$delicious = new Zend_Service_Delicious('username', 'password');
// by specifying URL
$delicious->deletePost('http://framework.zend.com');
// or by calling the method upon a post object
$posts = $delicious->getPosts();
$posts[0]->delete();
// another way of using deletePost()
$delicious->deletePost($posts[0]->getUrl());
?>
To add a post you first need to call the createNewPost() method, which returns a
Zend_Service_Delicious_Post object. When you edit the post, you need to save it
to the del.icio.us database by calling the save() method.
Przykład 29.18. Adding a post
<?php
$delicious = new Zend_Service_Delicious('username', 'password');
// create a new post and save it (with method call chaining)
$delicious->createNewPost('Zend Framework', 'http://framework.zend.com')
->setNotes('Zend Framework Homepage')
->save();
// create a new post and save it (without method call chaining)
$newPost = $delicious->createNewPost('Zend Framework', 'http://framework.zend.com');
$newPost->setNotes('Zend Framework Homepage');
$newPost->save();
?>
The del.icio.us web API allows access to the public data of all users.
Tabela 29.10. Methods for retrieving public data
| Name | Description | Return type |
|---|---|---|
getUserFans() |
Retrieves fans of a user | Array |
getUserNetwork() |
Retrieves network of a user | Array |
getUserPosts() |
Retrieves posts of a user | Zend_Service_Delicious_PostList |
getUserTags() |
Retrieves tags of a user | Array |
![]() |
Notatka |
|---|---|
When using only these methods, a username and password combination is not required when constructing
a new |
Przykład 29.21. Retrieving public data
<?php
// username and password are not required
$delicious = new Zend_Service_Delicious();
// get fans of user someUser
print_r($delicious->getUserFans('someUser'));
// get network of user someUser
print_r($delicious->getUserNetwork('someUser'));
// get tags of user someUser
print_r($delicious->getUserTags('someUser'));
?>
When retrieving public posts with the getUserPosts() method, a
Zend_Service_Delicious_PostList object is returned, and it contains
Zend_Service_Delicious_SimplePost objects, which contain basic information
about the posts, including URL, title, notes, and tags.
Zend_Service_Delicious uses Zend_Rest_Client for making HTTP requests
to the del.icio.us web service. To change which HTTP client Zend_Service_Delicious
uses, you need to change the HTTP client of Zend_Rest_Client.
Przykład 29.22. Changing the HTTP client of Zend_Rest_Client
<?php $myHttpClient = new My_Http_Client(); Zend_Rest_Client::setHttpClient($myHttpClient); ?>
When you are making more than one request with Zend_Service_Delicious to speed your
requests, it's better to configure your HTTP client to keep connections alive.
Przykład 29.23. Configuring your HTTP client to keep connections alive
<?php
Zend_Rest_Client::getHttpClient()->setConfig(array(
'keepalive' => true
));
?>
![]() |
Notatka |
|---|---|
When a |