发布于 2015-10-07 09:53:07 | 137 次阅读 | 评论: 0 | 来源: 网络整理
            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.
        
例 36.14. Get all posts
$delicious = new Zend_Service_Delicious('username', 'password');
$posts = $delicious->getAllPosts();
foreach ($posts as $post) {
    echo "--\n";
    echo "Title: {$post->getTitle()}\n";
    echo "Url: {$post->getUrl()}\n";
}
            
            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.
        
/**
 * 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);
        
            Instances of this class are returned by the getPosts(), getAllPosts(),
            getRecentPosts(), and getUserPosts() methods of Zend_Service_Delicious.
        
            For easier data access this class implements the Countable, Iterator, and
            ArrayAccess interfaces.
        
例 36.15. Accessing post lists
$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();
            | ![[注意]](http://www.php100.com/manual/ZendFramework/images/note.png) | 注意 | 
|---|---|
| 
                The  | 
Post list objects have two built-in filtering capabilities. Post lists may be filtered by tags and by URL.
例 36.16. Filtering a Post List with Specific Tags
                Posts may be filtered by specific tags using withTags(). As a convenience,
                withTag() is also provided for when only a single tag needs to be specified.
            
$delicious = new Zend_Service_Delicious('username', 'password');
$posts = $delicious->getAllPosts();
// Print posts having "php" and "zend" tags
foreach ($posts->withTags(array('php', 'zend')) as $post) {
    echo "Title: {$post->getTitle()}\n";
    echo "Url: {$post->getUrl()}\n";
}
            
例 36.17. Filtering a Post List by URL
                Posts may be filtered by URL matching a specified regular expression using the withUrl()
                method:
            
$delicious = new Zend_Service_Delicious('username', 'password');
$posts = $delicious->getAllPosts();
// Print posts having "help" in the URL
foreach ($posts->withUrl('/help/') as $post) {
    echo "Title: {$post->getTitle()}\n";
    echo "Url: {$post->getUrl()}\n";
}
            
例 36.18. Post editing
$delicious = new Zend_Service_Delicious('username', 'password');
$posts = $delicious->getPosts();
// set title
$posts[0]->setTitle('New title');
// save changes
$posts[0]->save();
            例 36.19. Method call chaining
Every setter method returns the post object so that you can chain method calls using a fluent interface.
$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.
        
例 36.20. Deleting posts
$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.
        
例 36.21. Adding a post
$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();
            例 36.22. Tags
$delicious = new Zend_Service_Delicious('username', 'password');
// get all tags
print_r($delicious->getTags());
// rename tag ZF to zendFramework
$delicious->renameTag('ZF', 'zendFramework');
            例 36.23. Bundles
$delicious = new Zend_Service_Delicious('username', 'password');
// get all bundles
print_r($delicious->getBundles());
// delete bundle someBundle
$delicious->deleteBundle('someBundle');
// add bundle
$delicious->addBundle('newBundle', array('tag1', 'tag2'));
            The del.icio.us web API allows access to the public data of all users.
表 36.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 | 
| ![[注意]](http://www.php100.com/manual/ZendFramework/images/note.png) | 注意 | 
|---|---|
| 
                When using only these methods, a username and password combination is not required when constructing
                a new  | 
例 36.24. Retrieving public data
// 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.
            
表 36.11. Methods of the Zend_Service_Delicious_SimplePost class
| Name | Description | Return type | 
|---|---|---|
| getNotes() | Returns notes of a post | String | 
| getTags() | Returns tags of a post | Array | 
| getTitle() | Returns title of a post | String | 
| getUrl() | Returns URL of a post | String | 
            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.
        
例 36.25. Changing the HTTP client of Zend_Rest_Client
$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.
        
例 36.26. Configuring your HTTP client to keep connections alive
Zend_Rest_Client::getHttpClient()->setConfig(array(
        'keepalive' => true
));
            | ![[注意]](http://www.php100.com/manual/ZendFramework/images/note.png) | 注意 | 
|---|---|
| 
                When a  |