Zend_Service_Delicious.xml 17 KB

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