Introducción a Zend Framework

 Aprendiendo Zend Framework

Apéndice

 Referencia de Zend Framework


  • Zend_Gdata
  • Zend_Http
  • Zend_InfoCard
  • Zend_Json
  • Zend_Layout
  • Zend_Ldap
  • Zend_Loader
  • Zend_Locale
  • Zend_Log
  • Zend_Mail
  • Zend_Markup
  • Zend_Measure
  • Zend_Memory
  • Zend_Mime
  • Zend_Navigation
  • Zend_Oauth
  • Zend_OpenId
  • Zend_Paginator
  • Zend_Pdf
  • Zend_ProgressBar
  • Zend_Queue
  • Zend_Reflection
  • Zend_Registry
  • Zend_Rest

  • Zend_Search_Lucene
  • Zend_Serializer
  • Zend_Server
  • Zend_Service
  • Zend_Session
  • Zend_Soap
  • Zend_Tag
  • Zend_Test
  • Zend_Text
  • Zend_TimeSync
  • Zend_Tool
  • Zend_Tool_Framework
  • Zend_Tool_Project
  • Zend_Translate
  • Zend_Uri
  • Zend_Validate
  • Zend_Version
  • Zend_View
  • Zend_Wildfire
  • Zend_XmlRpc
  • ZendX_Console_Process_Unix
  • ZendX_JQuery
  • Traducción al 26.9% - Actualizado el 2011-11-16 - Revisión 24249 - Versión ZF 1.11.x

    63.18. Zend_Service_Delicious

    63.18.1. Introduction

    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.

    Ejemplo 63.80. 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";
    }

    63.18.2. Retrieving posts

    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);

    63.18.3. Zend_Service_Delicious_PostList

    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.

    Ejemplo 63.81. 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();

    [Nota] Nota

    The ArrayAccess::offsetSet() and ArrayAccess::offsetUnset() methods throw exceptions in this implementation. Thus, code like unset($posts[0]); and $posts[0] = 'A'; will throw exceptions because these properties are read-only.

    Post list objects have two built-in filtering capabilities. Post lists may be filtered by tags and by URL.

    Ejemplo 63.82. 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";
    }

    Ejemplo 63.83. 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";
    }

    63.18.4. Editing posts

    Ejemplo 63.84. Post editing

    $delicious = new Zend_Service_Delicious('username''password');
    $posts $delicious->getPosts();

    // set title
    $posts[0]->setTitle('New title');
    // save changes
    $posts[0]->save();

    Ejemplo 63.85. 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();

    63.18.5. Deleting posts

    There are two ways to delete a post, by specifying the post URL or by calling the delete() method upon a post object.

    Ejemplo 63.86. 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());

    63.18.6. Adding new posts

    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.

    Ejemplo 63.87. 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();

    63.18.7. Tags

    Ejemplo 63.88. Tags

    $delicious = new Zend_Service_Delicious('username''password');

    // get all tags
    print_r($delicious->getTags());

    // rename tag ZF to zendFramework
    $delicious->renameTag('ZF''zendFramework');

    63.18.8. Bundles

    Ejemplo 63.89. 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'));

    63.18.9. Public data

    The del.icio.us web API allows access to the public data of all users.

    Tabla 63.14. 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

    [Nota] Nota

    When using only these methods, a username and password combination is not required when constructing a new Zend_Service_Delicious object.

    Ejemplo 63.90. 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'));

    63.18.9.1. Public posts

    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.

    Tabla 63.15. 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

    63.18.10. HTTP client

    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.

    Ejemplo 63.91. 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.

    Ejemplo 63.92. Configuring your HTTP client to keep connections alive

    Zend_Rest_Client::getHttpClient()->setConfig(array(
            
    'keepalive' => true
    ));

    [Nota] Nota

    When a Zend_Service_Delicious object is constructed, the SSL transport of Zend_Rest_Client is set to 'ssl' rather than the default of 'ssl2'. This is because del.icio.us has some problems with 'ssl2', such as requests taking a long time to complete (around 2 seconds).

    digg delicious meneame google twitter technorati facebook

    Comentarios

    Loading...