Introduction au Zend Framework

 Apprendre Zend Framework

appendix

 Guide de référence 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
  • Translation 61.2% Update 2010-11-28 - Revision 23149 - Version ZF 1.11.x

    63.18. Zend_Service_Delicious

    63.18.1. Introduction

    Zend_Service_Delicious est une API pour accéder aux Web services XML et JSON de del.icio.us. Ce composant vous donne, si vous avez les droits, un accès en lecture-écriture à vos entrées sur del.icio.us. Il permet également un accès en lecture seule aux données de tous les utilisateurs.

    Exemple 63.80. Récupérer toutes vos entrées

    $delicious = new Zend_Service_Delicious('identifiant''mot_de_passe');
    $posts $delicious->getAllPosts();

    foreach (
    $posts as $post) {
        echo 
    "--\n";
        echo 
    "Titre: {$post->getTitle()}\n";
        echo 
    "Url: {$post->getUrl()}\n";
    }

    63.18.2. Récupérer vos entrées

    Zend_Service_Delicious fournis trois méthodes pour récupérer vos entrées : getPosts(), getRecentPosts() et getAllPosts(). Elles retournent toutes une instance de la classe Zend_Service_Delicious_PostList, qui contient toutes les entrées récupérées.

    /**
     * Récupère les entrées correspondants aux arguments. Si la date ou
     * l'url n'est pas précisée, la date la plus récente
     * sera prise en compte.
     *
     * @param string $tag Optionnel pour filtrer par tag
     * @param Zend_Date $dt Optionnel pour filtrer par date
     * @param string $url Optionnel pour filtrer par url
     * @return Zend_Service_Delicious_PostList
     */
    public function getPosts($tag null$dt null$url null);

    /**
     * Récupère les dernières entrées
     *
     * @param string $tag Optionnel pour filtrer par tag
     * @param string $count Nombre maximum d'entrées à récupérer
     *                     (15 par défaut)
     * @return Zend_Service_Delicious_PostList
     */
    public function getRecentPosts($tag null$count 15);

    /**
     * Récupère toutes les entrées
     *
     * @param string $tag Optionnel pour filtrer par tag
     * @return Zend_Service_Delicious_PostList
     */
    public function getAllPosts($tag null);

    63.18.3. Zend_Service_Delicious_PostList

    Des instances de cette classe sont retournées par les méthodes getPosts(), getAllPosts(),getRecentPosts(), et getUserPosts() de Zend_Service_Delicious.

    Pour faciliter l'accès au données cette classe implémente les interfaces Countable, Iterator, etArrayAccess.

    Exemple 63.81. Accéder à la liste des entrées

    $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
                                            
    'mot_de_passe');
    $posts $delicious->getAllPosts();

    // Affiche le nombre d'entrées
    echo count($posts);

    // Itération sur les entrées
    foreach ($posts as $post) {
        echo 
    "--\n";
        echo 
    "Titre: {$post->getTitle()}\n";
        echo 
    "Url: {$post->getUrl()}\n";
    }

    // Affiche une entrée en utilisant un tableau
    echo $posts[0]->getTitle();

    [Note] Note

    Dans cette implémentation les méthodes ArrayAccess::offsetSet() et ArrayAccess::offsetUnset() lèvent des exceptions. Ainsi, du code tel que unset($posts[0]); ou $posts[0] = 'A'; lèvera une exception car ces propriétés sont en lecture seule.

    Les objets d'entrées ont deux capacités de filtrage incorporées. Les entrées peuvent être filtrées par étiquette et URL.

    Exemple 63.82. Filtrage d'une entrée par une étiquette spécifique

    Les entrées peuvent être filtrées par une (des) étiquette(s) spécifique(s) en utilisant withTags(). Par confort, withTag() est aussi fourni quand il est nécessaire 'e ne spécifier qu'une seule étiquette

    $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
                                            
    'mot_de_passe');
    $posts $delicious->getAllPosts();

    // Affiche les entrées ayant les étiquettes "php" et "zend"
    foreach ($posts->withTags(array('php''zend')) as $post) {
        echo 
    "Title: {$post->getTitle()}\n";
        echo 
    "Url: {$post->getUrl()}\n";
    }

    Exemple 63.83. Filtrage d'une entrée par URL

    Les entrées peuvent être filtrées par URL correspondant à une expression régulière spécifiée en utilisant la méthode withUrl() :

    $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
                                            
    'mot_de_passe');
    $posts $delicious->getAllPosts();

    // Affiche les entrées ayant "help" dans l'URL
    foreach ($posts->withUrl('/help/') as $post) {
        echo 
    "Title: {$post->getTitle()}\n";
        echo 
    "Url: {$post->getUrl()}\n";
    }

    63.18.4. Édition des entrées

    Exemple 63.84. Édition d'une entrée

    $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
                                            
    'mot_de_passe');
    $posts $delicious->getPosts();

    // change le titre
    $posts[0]->setTitle('Nouveau Titre');
    // sauvegarde le changement
    $posts[0]->save();

    Exemple 63.85. Enchaînement des appels de méthode

    Toutes les méthodes "setter" renvoient l'objet Zend_Service_Delicious_PostList vous pouvez donc chaîner les appels aux méthodes en utilisant une interface fluide.

    $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
                                            
    'mot_de_passe');
    $posts $delicious->getPosts();

    $posts[0]->setTitle('Nouveau Titre')
             ->
    setNotes('Nouvelle note')
             ->
    save();

    63.18.5. Supprimer des entrées

    Il y a deux moyens de supprimer une entrée, en spécifiant son URL ou en appelant la méthode delete() sur un objet Zend_Service_Delicious_PostList.

    Exemple 63.86. Suppression d'une entrée

    $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
                                            
    'mot_de_passe');

    // en spécifiant l' URL
    $delicious->deletePost('http://framework.zend.com');

    // en appelant la méthode de l'objet Zend_Service_Delicious_PostList
    $posts $delicious->getPosts();
    $posts[0]->delete();

    // une autre façon d'utiliser deletePost()
    $delicious->deletePost($posts[0]->getUrl());

    63.18.6. Ajout d'entrées

    Pour ajouter une entrée vous devez appeler la méthode createNewPost(), qui renvoie un objet Zend_Service_Delicious_Post. Quand vous éditez l'entrée, vous devez la sauvegarder dans la base de donnée de del.icio.us en appelant la méthode save().

    Exemple 63.87. Ajouter une entrée

    $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
                                            
    'mot_de_passe');

    // créé et sauvegarde une nouvelle entrée (en chainant les méthodes)
    $delicious->createNewPost('Zend Framework''http://framework.zend.com')
              ->
    setNotes('Page d\'accueil de Zend Framework')
              ->
    save();

    // créé et sauvegarde une nouvelle entrée (sans enchaîner les méthodes)
    $newPost $delicious->createNewPost('Zend Framework',
                                         
    'http://framework.zend.com');
    $newPost->setNotes('Page d\'accueil de Zend Framework');
    $newPost->save();

    63.18.7. Les étiquettes ("tags")

    Exemple 63.88. Récupérer les étiquettes

    $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
                                            
    'mot_de_passe');

    // récupère tous les étiquettes
    print_r($delicious->getTags());

    // renomme l'étiquette "ZF" en "zendFramework"
    $delicious->renameTag('ZF''zendFramework');

    63.18.8. Les groupes d'étiquettes

    Exemple 63.89. Gestion des groupes d'étiquette

    $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
                                            
    'mot_de_passe');

    // récupère tous les groupes
    print_r($delicious->getBundles());

    // efface le groupe someBundle
    $delicious->deleteBundle('someBundle');

    // ajoute un groupe
    $delicious->addBundle('newBundle', array('tag1''tag2'));

    63.18.9. Données publiques

    L'API Web del.icio.us autorise l'accès aux données publiques de tous les utilisateurs.

    Tableau 63.14. Méthodes pour récupérer les données publiques

    Nom Description Type de retour
    getUserFans() Récupère les fans d'un utilisateur Array
    getUserNetwork() Récupère le réseau d'un utilisateur Array
    getUserPosts() Récupère les entrées d'un utilisateur Zend_Service_Delicious_PostList
    getUserTags() Récupère les étiquettes d'un utilisateur Array

    [Note] Note

    Si vous utilisez uniquement ces méthodes, le nom d'utilisateur et le mot de passe ne sont pas obligatoires pour créer un nouvel objet Zend_Service_Delicious.

    Exemple 63.90. Récupérer les données publiques

    // nom d'utilisateur et mot de passe optionnels
    $delicious = new Zend_Service_Delicious();

    // récupère les fans de l'utilisateur someUser
    print_r($delicious->getUserFans('someUser'));

    // récupère le réseau de l'utilisateur someUser
    print_r($delicious->getUserNetwork('someUser'));

    // récupère les Tags de l'utilisateur someUser
    print_r($delicious->getUserTags('someUser'));

    63.18.9.1. Entrées publiques

    Quand vous récupérez des entrées publiques, la méthode getUserPosts() retourne un objet Zend_Service_Delicious_PostList qui contient des objets Zend_Service_Delicious_SimplePost. Ces derniers contiennent des informations basiques sur l'entrée : URL, title, notes, and tags.

    Tableau 63.15. Méthodes de la classe Zend_Service_Delicious_SimplePost

    Nom Description Type de retour
    getNotes() Récupère les notes de l'entrée String
    getTags() Récupère les étiquettes de l'entrée Array
    getTitle() Récupère le titre de l'entrée String
    getUrl() Récupère l'URL de l'entrée String

    63.18.10. Client HTTP

    Zend_Service_Delicious utilise Zend_Rest_Client pour effectuer les requêtes HTTP sur le Web service de del.icio.us. Pour modifier le client HTTP utiliser par Zend_Service_Delicious, vous devez modifier le client HTTP de Zend_Rest_Client.

    Exemple 63.91. Modifier le client HTTP de Zend_Rest_Client

    $myHttpClient = new My_Http_Client();
    Zend_Rest_Client::setHttpClient($myHttpClient);

    Quand vous effectuez plus d'une requête avec Zend_Service_Delicious vous pouvez accélérez vos requêtes en configurant votre client HTTP pour qu'il ne ferme pas les connexions.

    Exemple 63.92. Configurer votre client HTTP pour qu'il ne ferme pas les connexions

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

    [Note] Note

    En raison de quelques problèmes de del.icio.us avec 'ssl2' (environs 2 secondes pour une requête), quand un objet Zend_Service_Delicious est construit, le transport SSL de Zend_Rest_Client est configuré sur 'ssl' au lieu de la valeur par défaut 'ssl2'.

    digg delicious meneame google twitter technorati facebook

    Comments

    Loading...