Zend_Service_Delicious.xml 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- EN-Revision: 11146 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.service.delicious">
  5. <title>Zend_Service_Delicious</title>
  6. <sect2 id="zend.service.delicious.introduction">
  7. <title>Introduction</title>
  8. <para><classname>Zend_Service_Delicious</classname> est une API pour accéder aux Web services XML et JSON de <ulink
  9. url="http://del.icio.us">del.icio.us</ulink>. Ce composant vous donne, si vous avez les droits, un accès en
  10. lecture-écriture à vos entrées sur del.icio.us. Il permet également un accès en lecture seule aux données de
  11. tous les utilisateurs.</para>
  12. <example id="zend.service.delicious.introduction.getAllPosts">
  13. <title>Récupérer toutes vos entrées</title>
  14. <programlisting role="php"><![CDATA[
  15. $delicious = new Zend_Service_Delicious('identifiant', 'mot_de_passe');
  16. $posts = $delicious->getAllPosts();
  17. foreach ($posts as $post) {
  18. echo "--\n";
  19. echo "Titre: {$post->getTitle()}\n";
  20. echo "Url: {$post->getUrl()}\n";
  21. }
  22. ]]></programlisting>
  23. </example>
  24. </sect2>
  25. <sect2 id="zend.service.delicious.retrieving_posts">
  26. <title>Récupérer vos entrées</title>
  27. <para><classname>Zend_Service_Delicious</classname> fournis trois méthodes pour récupérer vos entrées :
  28. <code>getPosts()</code>, <code>getRecentPosts()</code> et <code>getAllPosts()</code>. Elles retournent toutes
  29. une instance de la classe <classname>Zend_Service_Delicious_PostList</classname>, qui contient toutes les entrées
  30. récupérées.</para>
  31. <programlisting role="php"><![CDATA[
  32. /**
  33. * Récupère les entrées correspondants aux arguments. Si la date ou
  34. * l'url n'est pas précisée, la date la plus récente
  35. * sera prise en compte.
  36. *
  37. * @param string $tag Optionnel pour filtrer par tag
  38. * @param Zend_Date $dt Optionnel pour filtrer par date
  39. * @param string $url Optionnel pour filtrer par url
  40. * @return Zend_Service_Delicious_PostList
  41. */
  42. public function getPosts($tag = null, $dt = null, $url = null);
  43. /**
  44. * Récupère les dernières entrées
  45. *
  46. * @param string $tag Optionnel pour filtrer par tag
  47. * @param string $count Nombre maximum d'entrées à récupérer
  48. * (15 par défaut)
  49. * @return Zend_Service_Delicious_PostList
  50. */
  51. public function getRecentPosts($tag = null, $count = 15);
  52. /**
  53. * Récupère toutes les entrées
  54. *
  55. * @param string $tag Optionnel pour filtrer par tag
  56. * @return Zend_Service_Delicious_PostList
  57. */
  58. public function getAllPosts($tag = null);
  59. ]]></programlisting>
  60. </sect2>
  61. <sect2 id="zend.service.delicious.postlist">
  62. <title>Zend_Service_Delicious_PostList</title>
  63. <para>Des instances de cette classe sont retournées par les méthodes <code>getPosts()</code>,
  64. <code>getAllPosts()</code>,<code>getRecentPosts()</code>, et <code>getUserPosts()</code> de
  65. <classname>Zend_Service_Delicious</classname>.</para>
  66. <para>Pour faciliter l'accès au données cette classe implémente les interfaces <code>Countable</code>,
  67. <code>Iterator</code>, et<code>ArrayAccess</code>.</para>
  68. <example id="zend.service.delicious.postlist.accessing_post_lists">
  69. <title>Accéder à la liste des entrées</title>
  70. <programlisting role="php"><![CDATA[
  71. $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
  72. 'mot_de_passe');
  73. $posts = $delicious->getAllPosts();
  74. // Affiche le nombre d'entrées
  75. echo count($posts);
  76. // Itération sur les entrées
  77. foreach ($posts as $post) {
  78. echo "--\n";
  79. echo "Titre: {$post->getTitle()}\n";
  80. echo "Url: {$post->getUrl()}\n";
  81. }
  82. // Affiche une entrée en utilisant un tableau
  83. echo $posts[0]->getTitle();
  84. ]]></programlisting>
  85. </example>
  86. <note>
  87. <para>Dans cette implémentation les méthodes <code>ArrayAccess::offsetSet()</code> et
  88. <code>ArrayAccess::offsetUnset()</code> lèvent des exceptions. Ainsi, du code tel que
  89. <code>unset($posts[0]);</code> ou <code>$posts[0] = 'A';</code> lèvera une exception car ces propriétés sont
  90. en lecture seule.</para>
  91. </note>
  92. <para>Les objets d'entrées ont deux capacités de filtrage incorporées. Les entrées peuvent être filtrées par
  93. étiquette et URL.</para>
  94. <example id="zend.service.delicious.postlist.example.withTags">
  95. <title>Filtrage d'une entrée par une étiquette spécifique</title>
  96. <para>Les entrées peuvent être filtrées par une (des) étiquette(s) spécifique(s) en utilisant
  97. <code>withTags()</code>. Par confort, <code>withTag()</code> est aussi fourni quand il est nécessaire 'e ne
  98. spécifier qu'une seule étiquette</para>
  99. <programlisting role="php"><![CDATA[
  100. $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
  101. 'mot_de_passe');
  102. $posts = $delicious->getAllPosts();
  103. // Affiche les entrées ayant les étiquettes "php" et "zend"
  104. foreach ($posts->withTags(array('php', 'zend')) as $post) {
  105. echo "Title: {$post->getTitle()}\n";
  106. echo "Url: {$post->getUrl()}\n";
  107. }
  108. ]]></programlisting>
  109. </example>
  110. <example id="zend.service.delicious.postlist.example.byUrl">
  111. <title>Filtrage d'une entrée par URL</title>
  112. <para>Les entrées peuvent être filtrées par URL correspondant à une expression régulière spécifiée en
  113. utilisant la méthode <code>withUrl()</code> :</para>
  114. <programlisting role="php"><![CDATA[
  115. $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
  116. 'mot_de_passe');
  117. $posts = $delicious->getAllPosts();
  118. // Affiche les entrées ayant "help" dans l'URL
  119. foreach ($posts->withUrl('/help/') as $post) {
  120. echo "Title: {$post->getTitle()}\n";
  121. echo "Url: {$post->getUrl()}\n";
  122. }
  123. ]]></programlisting>
  124. </example>
  125. </sect2>
  126. <sect2 id="zend.service.delicious.editing_posts">
  127. <title>Édition des entrées</title>
  128. <example id="zend.service.delicious.editing_posts.post_editing">
  129. <title>Édition d'une entrée</title>
  130. <programlisting role="php"><![CDATA[
  131. $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
  132. 'mot_de_passe');
  133. $posts = $delicious->getPosts();
  134. // change le titre
  135. $posts[0]->setTitle('Nouveau Titre');
  136. // sauvegarde le changement
  137. $posts[0]->save();
  138. ]]></programlisting>
  139. </example>
  140. <example id="zend.service.delicious.editing_posts.method_call_chaining">
  141. <title>Enchaînement des appels de méthode</title>
  142. <para>Toutes les méthodes "setter" renvoient l'objet <classname>Zend_Service_Delicious_PostList</classname> vous
  143. pouvez donc chaîner les appels aux méthodes en utilisant une interface fluide.</para>
  144. <programlisting role="php"><![CDATA[
  145. $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
  146. 'mot_de_passe');
  147. $posts = $delicious->getPosts();
  148. $posts[0]->setTitle('Nouveau Titre')
  149. ->setNotes('Nouvelle note')
  150. ->save();
  151. ]]></programlisting>
  152. </example>
  153. </sect2>
  154. <sect2 id="zend.service.delicious.deleting_posts">
  155. <title>Supprimer des entrées</title>
  156. <para>Il y a deux moyens de supprimer une entrée, en spécifiant son URL ou en appelant la méthode
  157. <code>delete()</code> sur un objet Zend_Service_Delicious_PostList.</para>
  158. <example id="zend.service.delicious.deleting_posts.deleting_posts">
  159. <title>Suppression d'une entrée</title>
  160. <programlisting role="php"><![CDATA[
  161. $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
  162. 'mot_de_passe');
  163. // en spécifiant l' URL
  164. $delicious->deletePost('http://framework.zend.com');
  165. // en appelant la méthode de l'objet Zend_Service_Delicious_PostList
  166. $posts = $delicious->getPosts();
  167. $posts[0]->delete();
  168. // une autre façon d'utiliser deletePost()
  169. $delicious->deletePost($posts[0]->getUrl());
  170. ]]></programlisting>
  171. </example>
  172. </sect2>
  173. <sect2 id="zend.service.delicious.adding_posts">
  174. <title>Ajout d'entrées</title>
  175. <para>Pour ajouter une entrée vous devez appeler la méthode <code>createNewPost()</code>, qui renvoie un objet
  176. <classname>Zend_Service_Delicious_Post</classname>. Quand vous éditez l'entrée, vous devez la sauvegarder dans la base de
  177. donnée de del.icio.us en appelant la méthode <code>save()</code>.</para>
  178. <example id="zend.service.delicious.adding_posts.adding_a_post">
  179. <title>Ajouter une entrée</title>
  180. <programlisting role="php"><![CDATA[
  181. $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
  182. 'mot_de_passe');
  183. // créé et sauvegarde une nouvelle entrée (en chainant les méthodes)
  184. $delicious->createNewPost('Zend Framework', 'http://framework.zend.com')
  185. ->setNotes('Page d\'accueil de Zend Framework')
  186. ->save();
  187. // créé et sauvegarde une nouvelle entrée (sans enchaîner les méthodes)
  188. $newPost = $delicious->createNewPost('Zend Framework',
  189. 'http://framework.zend.com');
  190. $newPost->setNotes('Page d\'accueil de Zend Framework');
  191. $newPost->save();
  192. ]]></programlisting>
  193. </example>
  194. </sect2>
  195. <sect2 id="zend.service.delicious.tags">
  196. <title>Les étiquettes ("tags")</title>
  197. <example id="zend.service.delicious.tags.tags">
  198. <title>Récupérer les étiquettes</title>
  199. <programlisting role="php"><![CDATA[
  200. $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
  201. 'mot_de_passe');
  202. // récupère tous les étiquettes
  203. print_r($delicious->getTags());
  204. // renomme l'étiquette "ZF" en "zendFramework"
  205. $delicious->renameTag('ZF', 'zendFramework');
  206. ]]></programlisting>
  207. </example>
  208. </sect2>
  209. <sect2 id="zend.service.delicious.bundles">
  210. <title>Les groupes d'étiquettes</title>
  211. <example id="zend.service.delicious.bundles.example">
  212. <title>Gestion des groupes d'étiquette</title>
  213. <programlisting role="php"><![CDATA[
  214. $delicious = new Zend_Service_Delicious('nom_d_utilisateur',
  215. 'mot_de_passe');
  216. // récupère tous les groupes
  217. print_r($delicious->getBundles());
  218. // efface le groupe someBundle
  219. $delicious->deleteBundle('someBundle');
  220. // ajoute un groupe
  221. $delicious->addBundle('newBundle', array('tag1', 'tag2'));
  222. ]]></programlisting>
  223. </example>
  224. </sect2>
  225. <sect2 id="zend.service.delicious.public_data">
  226. <title>Données publiques</title>
  227. <para>L'API Web del.icio.us autorise l'accès aux données publiques de tous les utilisateurs.</para>
  228. <table id="zend.service.delicious.public_data.functions_for_retrieving_public_data">
  229. <title>Méthodes pour récupérer les données publiques</title>
  230. <tgroup cols="3">
  231. <thead>
  232. <row>
  233. <entry>Nom</entry>
  234. <entry>Description</entry>
  235. <entry>Type de retour</entry>
  236. </row>
  237. </thead>
  238. <tbody>
  239. <row>
  240. <entry><code>getUserFans()</code></entry>
  241. <entry>Récupère les fans d'un utilisateur</entry>
  242. <entry>Array</entry>
  243. </row>
  244. <row>
  245. <entry><code>getUserNetwork()</code></entry>
  246. <entry>Récupère le réseau d'un utilisateur</entry>
  247. <entry>Array</entry>
  248. </row>
  249. <row>
  250. <entry><code>getUserPosts()</code></entry>
  251. <entry>Récupère les entrées d'un utilisateur</entry>
  252. <entry>Zend_Service_Delicious_PostList</entry>
  253. </row>
  254. <row>
  255. <entry><code>getUserTags()</code></entry>
  256. <entry>Récupère les étiquettes d'un utilisateur</entry>
  257. <entry>Array</entry>
  258. </row>
  259. </tbody>
  260. </tgroup>
  261. </table>
  262. <note>
  263. <para>Si vous utilisez uniquement ces méthodes, le nom d'utilisateur et le mot de passe ne sont pas
  264. obligatoires pour créer un nouvel objet <classname>Zend_Service_Delicious</classname>.</para>
  265. </note>
  266. <example id="zend.service.delicious.public_data.retrieving_public_data">
  267. <title>Récupérer les données publiques</title>
  268. <programlisting role="php"><![CDATA[
  269. // nom d'utilisateur et mot de passe optionnels
  270. $delicious = new Zend_Service_Delicious();
  271. // récupère les fans de l'utilisateur someUser
  272. print_r($delicious->getUserFans('someUser'));
  273. // récupère le réseau de l'utilisateur someUser
  274. print_r($delicious->getUserNetwork('someUser'));
  275. // récupère les Tags de l'utilisateur someUser
  276. print_r($delicious->getUserTags('someUser'));
  277. ]]></programlisting>
  278. </example>
  279. <sect3 id="zend.service.delicious.public_data.posts">
  280. <title>Entrées publiques</title>
  281. <para>Quand vous récupérez des entrées publiques, la méthode <code>getUserPosts()</code> retourne un objet
  282. <classname>Zend_Service_Delicious_PostList</classname> qui contient des objets
  283. <classname>Zend_Service_Delicious_SimplePost</classname>. Ces derniers contiennent des informations basiques sur
  284. l'entrée : URL, title, notes, and tags.</para>
  285. <table id="zend.service.delicious.public_data.posts.SimplePost_methods">
  286. <title>Méthodes de la classe <classname>Zend_Service_Delicious_SimplePost</classname></title>
  287. <tgroup cols="3">
  288. <thead>
  289. <row>
  290. <entry>Nom</entry>
  291. <entry>Description</entry>
  292. <entry>Type de retour</entry>
  293. </row>
  294. </thead>
  295. <tbody>
  296. <row>
  297. <entry><code>getNotes()</code></entry>
  298. <entry>Récupère les notes de l'entrée</entry>
  299. <entry>String</entry>
  300. </row>
  301. <row>
  302. <entry><code>getTags()</code></entry>
  303. <entry>Récupère les étiquettes de l'entrée</entry>
  304. <entry>Array</entry>
  305. </row>
  306. <row>
  307. <entry><code>getTitle()</code></entry>
  308. <entry>Récupère le titre de l'entrée</entry>
  309. <entry>String</entry>
  310. </row>
  311. <row>
  312. <entry><code>getUrl()</code></entry>
  313. <entry>Récupère l'URL de l'entrée</entry>
  314. <entry>String</entry>
  315. </row>
  316. </tbody>
  317. </tgroup>
  318. </table>
  319. </sect3>
  320. </sect2>
  321. <sect2 id="zend.service.delicious.httpclient">
  322. <title>Client HTTP</title>
  323. <para><classname>Zend_Service_Delicious</classname> utilise <classname>Zend_Rest_Client</classname> pour effectuer les requêtes HTTP
  324. sur le Web service de del.icio.us. Pour modifier le client HTTP utiliser par
  325. <classname>Zend_Service_Delicious</classname>, vous devez modifier le client HTTP de <classname>Zend_Rest_Client</classname>.</para>
  326. <example id="zend.service.delicious.httpclient.changing">
  327. <title>Modifier le client HTTP de <classname>Zend_Rest_Client</classname></title>
  328. <programlisting role="php"><![CDATA[
  329. $myHttpClient = new My_Http_Client();
  330. Zend_Rest_Client::setHttpClient($myHttpClient);
  331. ]]></programlisting>
  332. </example>
  333. <para>Quand vous effectuez plus d'une requête avec <classname>Zend_Service_Delicious</classname> vous pouvez accélérez vos
  334. requêtes en configurant votre client HTTP pour qu'il ne ferme pas les connexions.</para>
  335. <example id="zend.service.delicious.httpclient.keepalive">
  336. <title>Configurer votre client HTTP pour qu'il ne ferme pas les connexions</title>
  337. <programlisting role="php"><![CDATA[
  338. Zend_Rest_Client::getHttpClient()->setConfig(array(
  339. 'keepalive' => true
  340. ));
  341. ]]></programlisting>
  342. </example>
  343. <note>
  344. <para>En raison de quelques problèmes de del.icio.us avec <code>'ssl2'</code> (environs 2 secondes pour une
  345. requête), quand un objet <classname>Zend_Service_Delicious</classname> est construit, le transport SSL de
  346. <classname>Zend_Rest_Client</classname> est configuré sur <code>'ssl'</code> au lieu de la valeur par défaut
  347. <code>'ssl2'</code>.</para>
  348. </note>
  349. </sect2>
  350. </sect1>