| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.service.delicious">
- <title>Zend_Service_Delicious</title>
- <sect2 id="zend.service.delicious.introduction">
- <title>Introduction</title>
- <para>
- <classname>Zend_Service_Delicious</classname> est une <acronym>API</acronym> pour accéder aux Web
- services <acronym>XML</acronym> et <acronym>JSON</acronym> de <ulink url="http://del.icio.us">del.icio.us</ulink>. 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.
- </para>
- <example id="zend.service.delicious.introduction.getAllPosts">
- <title>Récupérer toutes vos entrées</title>
- <programlisting language="php"><![CDATA[
- $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";
- }
- ]]></programlisting>
- </example>
- </sect2>
- <sect2 id="zend.service.delicious.retrieving_posts">
- <title>Récupérer vos entrées</title>
- <para>
- <classname>Zend_Service_Delicious</classname> fournis trois méthodes pour
- récupérer vos entrées : <methodname>getPosts()</methodname>, <methodname>getRecentPosts()</methodname> et
- <methodname>getAllPosts()</methodname>. Elles retournent toutes une instance de la classe
- <classname>Zend_Service_Delicious_PostList</classname>, qui contient toutes les entrées
- récupérées.
- </para>
- <programlisting language="php"><![CDATA[
- /**
- * 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);
- ]]></programlisting>
- </sect2>
- <sect2 id="zend.service.delicious.postlist">
- <title>Zend_Service_Delicious_PostList</title>
- <para>
- Des instances de cette classe sont retournées par les méthodes
- <methodname>getPosts()</methodname>, <methodname>getAllPosts()</methodname>,<methodname>getRecentPosts()</methodname>, et
- <methodname>getUserPosts()</methodname> de <classname>Zend_Service_Delicious</classname>.
- </para>
- <para>
- Pour faciliter l'accès au données cette classe implémente les interfaces
- <code>Countable</code>, <code>Iterator</code>, et<code>ArrayAccess</code>.
- </para>
- <example id="zend.service.delicious.postlist.accessing_post_lists">
- <title>Accéder à la liste des entrées</title>
- <programlisting language="php"><![CDATA[
- $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();
- ]]></programlisting>
- </example>
- <note>
- <para>
- Dans cette implémentation les méthodes <methodname>ArrayAccess::offsetSet()</methodname>
- et <methodname>ArrayAccess::offsetUnset()</methodname> lèvent des exceptions. Ainsi, du code tel
- que <code>unset($posts[0]);</code> ou <code>$posts[0] = 'A';</code> lèvera une
- exception car ces propriétés sont en lecture seule.
- </para>
- </note>
- <para>
- Les objets d'entrées ont deux capacités de filtrage incorporées. Les entrées
- peuvent être filtrées par étiquette et <acronym>URL</acronym>.
- </para>
- <example id="zend.service.delicious.postlist.example.withTags">
- <title>Filtrage d'une entrée par une étiquette spécifique</title>
- <para>
- Les entrées peuvent être filtrées par une (des) étiquette(s) spécifique(s) en
- utilisant <methodname>withTags()</methodname>. Par confort, <methodname>withTag()</methodname> est aussi
- fourni quand il est nécessaire 'e ne spécifier qu'une seule étiquette
- </para>
- <programlisting language="php"><![CDATA[
- $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";
- }
- ]]></programlisting>
- </example>
- <example id="zend.service.delicious.postlist.example.byUrl">
- <title>Filtrage d'une entrée par URL</title>
- <para>
- Les entrées peuvent être filtrées par <acronym>URL</acronym> correspondant à une expression
- régulière spécifiée en utilisant la méthode <methodname>withUrl()</methodname> :
- </para>
- <programlisting language="php"><![CDATA[
- $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";
- }
- ]]></programlisting>
- </example>
- </sect2>
- <sect2 id="zend.service.delicious.editing_posts">
- <title>Édition des entrées</title>
- <example id="zend.service.delicious.editing_posts.post_editing">
- <title>Édition d'une entrée</title>
- <programlisting language="php"><![CDATA[
- $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();
- ]]></programlisting>
- </example>
- <example id="zend.service.delicious.editing_posts.method_call_chaining">
- <title>Enchaînement des appels de méthode</title>
- <para>
- Toutes les méthodes "setter" renvoient l'objet
- <classname>Zend_Service_Delicious_PostList</classname> vous pouvez donc chaîner les
- appels aux méthodes en utilisant une interface fluide.
- </para>
- <programlisting language="php"><![CDATA[
- $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
- 'mot_de_passe');
- $posts = $delicious->getPosts();
- $posts[0]->setTitle('Nouveau Titre')
- ->setNotes('Nouvelle note')
- ->save();
- ]]></programlisting>
- </example>
- </sect2>
- <sect2 id="zend.service.delicious.deleting_posts">
- <title>Supprimer des entrées</title>
- <para>
- Il y a deux moyens de supprimer une entrée, en spécifiant son <acronym>URL</acronym> ou en appelant
- la méthode <methodname>delete()</methodname> sur un objet Zend_Service_Delicious_PostList.
- </para>
- <example id="zend.service.delicious.deleting_posts.deleting_posts">
- <title>Suppression d'une entrée</title>
- <programlisting language="php"><![CDATA[
- $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());
- ]]></programlisting>
- </example>
- </sect2>
- <sect2 id="zend.service.delicious.adding_posts">
- <title>Ajout d'entrées</title>
- <para>
- Pour ajouter une entrée vous devez appeler la méthode
- <methodname>createNewPost()</methodname>, qui renvoie un objet
- <classname>Zend_Service_Delicious_Post</classname>. 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
- <methodname>save()</methodname>.
- </para>
- <example id="zend.service.delicious.adding_posts.adding_a_post">
- <title>Ajouter une entrée</title>
- <programlisting language="php"><![CDATA[
- $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();
- ]]></programlisting>
- </example>
- </sect2>
- <sect2 id="zend.service.delicious.tags">
- <title>Les étiquettes ("tags")</title>
- <example id="zend.service.delicious.tags.tags">
- <title>Récupérer les étiquettes</title>
- <programlisting language="php"><![CDATA[
- $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');
- ]]></programlisting>
- </example>
- </sect2>
- <sect2 id="zend.service.delicious.bundles">
- <title>Les groupes d'étiquettes</title>
- <example id="zend.service.delicious.bundles.example">
- <title>Gestion des groupes d'étiquette</title>
- <programlisting language="php"><![CDATA[
- $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'));
- ]]></programlisting>
- </example>
- </sect2>
- <sect2 id="zend.service.delicious.public_data">
- <title>Données publiques</title>
- <para>
- L'API Web del.icio.us autorise l'accès aux données publiques de tous les
- utilisateurs.
- </para>
- <table id="zend.service.delicious.public_data.functions_for_retrieving_public_data">
- <title>Méthodes pour récupérer les données publiques</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>Nom</entry>
- <entry>Description</entry>
- <entry>Type de retour</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry><methodname>getUserFans()</methodname></entry>
- <entry>Récupère les fans d'un utilisateur</entry>
- <entry>Array</entry>
- </row>
- <row>
- <entry><methodname>getUserNetwork()</methodname></entry>
- <entry>Récupère le réseau d'un utilisateur</entry>
- <entry>Array</entry>
- </row>
- <row>
- <entry><methodname>getUserPosts()</methodname></entry>
- <entry>Récupère les entrées d'un utilisateur</entry>
- <entry>Zend_Service_Delicious_PostList</entry>
- </row>
- <row>
- <entry><methodname>getUserTags()</methodname></entry>
- <entry>Récupère les étiquettes d'un utilisateur</entry>
- <entry>Array</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- <note>
- <para>
- 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
- <classname>Zend_Service_Delicious</classname>.
- </para>
- </note>
- <example id="zend.service.delicious.public_data.retrieving_public_data">
- <title>Récupérer les données publiques</title>
- <programlisting language="php"><![CDATA[
- // 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'));
- ]]></programlisting>
- </example>
- <sect3 id="zend.service.delicious.public_data.posts">
- <title>Entrées publiques</title>
- <para>
- Quand vous récupérez des entrées publiques, la méthode
- <methodname>getUserPosts()</methodname> retourne un objet
- <classname>Zend_Service_Delicious_PostList</classname> qui contient des objets
- <classname>Zend_Service_Delicious_SimplePost</classname>. Ces derniers contiennent
- des informations basiques sur l'entrée : <acronym>URL</acronym>, title, notes, and tags.
- </para>
- <table id="zend.service.delicious.public_data.posts.SimplePost_methods">
- <title>Méthodes de la classe
- <classname>Zend_Service_Delicious_SimplePost</classname></title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>Nom</entry>
- <entry>Description</entry>
- <entry>Type de retour</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry><methodname>getNotes()</methodname></entry>
- <entry>Récupère les notes de l'entrée</entry>
- <entry>String</entry>
- </row>
- <row>
- <entry><methodname>getTags()</methodname></entry>
- <entry>Récupère les étiquettes de l'entrée</entry>
- <entry>Array</entry>
- </row>
- <row>
- <entry><methodname>getTitle()</methodname></entry>
- <entry>Récupère le titre de l'entrée</entry>
- <entry>String</entry>
- </row>
- <row>
- <entry><methodname>getUrl()</methodname></entry>
- <entry>Récupère l'URL de l'entrée</entry>
- <entry>String</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </sect3>
- </sect2>
- <sect2 id="zend.service.delicious.httpclient">
- <title>Client HTTP</title>
- <para>
- <classname>Zend_Service_Delicious</classname> utilise
- <classname>Zend_Rest_Client</classname> pour effectuer les requêtes <acronym>HTTP</acronym> sur le Web
- service de del.icio.us. Pour modifier le client <acronym>HTTP</acronym> utiliser par
- <classname>Zend_Service_Delicious</classname>, vous devez modifier le client <acronym>HTTP</acronym> de
- <classname>Zend_Rest_Client</classname>.
- </para>
- <example id="zend.service.delicious.httpclient.changing">
- <title>Modifier le client HTTP de <classname>Zend_Rest_Client</classname></title>
- <programlisting language="php"><![CDATA[
- $myHttpClient = new My_Http_Client();
- Zend_Rest_Client::setHttpClient($myHttpClient);
- ]]></programlisting>
- </example>
- <para>
- Quand vous effectuez plus d'une requête avec
- <classname>Zend_Service_Delicious</classname> vous pouvez accélérez vos requêtes en
- configurant votre client <acronym>HTTP</acronym> pour qu'il ne ferme pas les connexions.
- </para>
- <example id="zend.service.delicious.httpclient.keepalive">
- <title>Configurer votre client HTTP pour qu'il ne ferme pas les connexions</title>
- <programlisting language="php"><![CDATA[
- Zend_Rest_Client::getHttpClient()->setConfig(array(
- 'keepalive' => true
- ));
- ]]></programlisting>
- </example>
- <note>
- <para>
- En raison de quelques problèmes de del.icio.us avec <code>'ssl2'</code>
- (environs 2 secondes pour une requête), quand un objet
- <classname>Zend_Service_Delicious</classname> est construit, le transport <acronym>SSL</acronym> de
- <classname>Zend_Rest_Client</classname> est configuré sur <code>'ssl'</code> au lieu
- de la valeur par défaut <code>'ssl2'</code>.
- </para>
- </note>
- </sect2>
- </sect1>
|