<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Le Temple du Argh tout puissant - PHP</title>
    <link>http://blog.temple-du-argh.net/</link>
    <description>Le repaire de la divinité antique de l'absurde</description>
    <dc:language>fr</dc:language>
    <generator>Serendipity 1.1.4 - http://www.s9y.org/</generator>
    <managingEditor>argh@php-tools.net</managingEditor>
<webMaster>argh@php-tools.net</webMaster>
<pubDate>Fri, 10 Jun 2005 16:27:38 GMT</pubDate>

    <image>
        <url>http://blog.temple-du-argh.net/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Le Temple du Argh tout puissant - PHP - Le repaire de la divinité antique de l'absurde</title>
        <link>http://blog.temple-du-argh.net/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>La documentation passe aussi par la gestion des erreurs</title>
    <link>http://blog.temple-du-argh.net/archives/73-La-documentation-passe-aussi-par-la-gestion-des-erreurs.html</link>
            <category>PHP</category>
    
    <comments>http://blog.temple-du-argh.net/archives/73-La-documentation-passe-aussi-par-la-gestion-des-erreurs.html#comments</comments>
    <wfw:comment>http://blog.temple-du-argh.net/wfwcomment.php?cid=73</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://blog.temple-du-argh.net/rss.php?version=2.0&amp;type=comments&amp;cid=73</wfw:commentRss>
    

    <author>nospam@example.com (Argh)</author>
    <content:encoded>
    &lt;i&gt;&lt;b&gt;Note:&lt;/b&gt; ce que j&#039;écris ici se rapporte surtout à la documentation technique de librairies et applications Open Source et/ou commerciales, et pas de la documentation pour les utilisateurs.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Écrire de la doc, la hantise du programmeur? Ca dépend beaucoup de comment on s&#039;y prend. Je connais bien trop de librairies Open Source qui n&#039;ont pas de documentation, si ce n&#039;est la inline doc avec les descriptions des fonctions et méthodes - et la plupart du temps, ces informations sont absolument inutiles. Le résultat est que même si on utilise un générateur de documentation comme &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=680&amp;amp;entry_id=73&quot; title=&quot;http://www.phpdoc.org&quot;  onmouseover=&quot;window.status=&#039;http://www.phpdoc.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;phpDocumentor&lt;/a&gt;, on a une belle documentation cliquable et tout, mais quand on veut savoir comment utiliser telle ou telle fonction, on n&#039;y trouve que des banalités. Or, c&#039;est une bonne documentation qui va garantir la longévité et le succès d&#039;une librairie ou application. &lt;br /&gt;&lt;a href=&quot;http://blog.temple-du-argh.net/archives/73-La-documentation-passe-aussi-par-la-gestion-des-erreurs.html#extended&quot;&gt;Continuer à lire &quot;La documentation passe aussi par la gestion des erreurs&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 08 Jun 2005 15:46:59 +0200</pubDate>
    <guid isPermaLink="false">http://blog.temple-du-argh.net/archives/73-guid.html</guid>
    
</item>
<item>
    <title>Mise à jour du projet Anthéa</title>
    <link>http://blog.temple-du-argh.net/archives/71-Mise-a-jour-du-projet-Anthea.html</link>
            <category>PHP</category>
    
    <comments>http://blog.temple-du-argh.net/archives/71-Mise-a-jour-du-projet-Anthea.html#comments</comments>
    <wfw:comment>http://blog.temple-du-argh.net/wfwcomment.php?cid=71</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.temple-du-argh.net/rss.php?version=2.0&amp;type=comments&amp;cid=71</wfw:commentRss>
    

    <author>nospam@example.com (Argh)</author>
    <content:encoded>
    Pour ceux qui ne connaissent pas, &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=658&amp;amp;entry_id=71&quot; title=&quot;http://sebastian.mordziol.de&quot;  onmouseover=&quot;window.status=&#039;http://sebastian.mordziol.de&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Anthéa&lt;/a&gt; est mon site perso (le nom vient d&#039;un personnage d&#039;un livre que j&#039;ai commencé à écrire il y a quelques années), qui a la particularité d&#039;être très large: 5800 pixels pour être exact &lt;img src=&quot;http://blog.temple-du-argh.net/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
J&#039;ai fait une assez grande mise à jour, en rajoutant près de 10 projets anciens et récents à la section références, et j&#039;ai rajouté la section des liens. J&#039;ai aussi retravaillé la liste des références et la mise en page du détail d&#039;une référence. Pour ça, le XSLT est quand-même vachement pratique - rapide, flexible... très sympa. Anthéa fonctionne avec patPortal*, et pour utiliser du XSL, c&#039;est super facile. Dans le fichier XML définissant les contenus d&#039;une page, il suffit de rajouter la composante XSL et de la configurer:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
&amp;lt;page:area&amp;#160;id=&quot;content&quot;&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;component:components&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;component:component&amp;#160;name=&quot;XSL&quot;&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;component:params&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;component:param&amp;#160;name=&quot;xmlfile&quot;&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;data/projects.xml&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;/component:param&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;component:param&amp;#160;name=&quot;xslfile&quot;&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;templates/XSL/projectList.xsl&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;/component:param&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;/component:params&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;/component:component&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;/component:components&amp;gt;&lt;br /&gt;
&amp;lt;/page:area&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Le contenu que va générer la composante XSL sera donc inséré dans la partie &#039;content&#039; de la page. Pour placer le contenu d&#039;une partie de page, il suffit de placer la variable correspondante dans le template du framework du site (patTemplate). Dans Anthéa, ça donne ceci:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
&amp;lt;!--&amp;#160;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;extrait&amp;#160;du&amp;#160;template&amp;#160;framework.tmpl,&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;contenant&amp;#160;la&amp;#160;structure&amp;#160;HTML&amp;#160;du&amp;#160;site&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;#160;id=&quot;contentFrame&quot;&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;table&amp;#160;cellpadding=&quot;0&quot;&amp;#160;cellspacing=&quot;0&quot;&amp;#160;border=&quot;0&quot;&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;tr&amp;#160;valign=&quot;top&quot;&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;td&amp;#160;width=&quot;513&quot;&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;div&amp;#160;style=&quot;width:513px;&quot;&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;div&amp;#160;id=&quot;content&quot;&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{AREA_CONTENT}&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;div&amp;#160;id=&quot;nav&quot;&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;div&amp;#160;style=&quot;padding:15px;&quot;&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{AREA_NAVIGATION}&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Le contenu est inséré à la place de la variable {AREA_CONTENT}. On peut définir autant de composantes qu&#039;on veut dans une même partie de page, leurs contenus sont ajoutées entre elles dasn l&#039;ordre ou elles sont définies dans le XML. On peut donc se construire les pages de toutes pièces &lt;img src=&quot;http://blog.temple-du-argh.net/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
*: patPortal est un nouveau projet de &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=659&amp;amp;entry_id=71&quot; title=&quot;http://www.php-tools.net&quot;  onmouseover=&quot;window.status=&#039;http://www.php-tools.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;php-tools&lt;/a&gt;, mais qui n&#039;a pas encore été publié. C&#039;est un framework MVC développé par &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=660&amp;amp;entry_id=71&quot; title=&quot;http://pear.php.net/user/schst&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/user/schst&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Stéphane&lt;/a&gt;, et qui a la grande particularité d&#039;abstraire a peu près tout ce qui peut l&#039;être... il est possible de télécharger la version CVS actuelle sous &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=661&amp;amp;entry_id=71&quot; title=&quot;http://snaps.php-tools.net&quot;  onmouseover=&quot;window.status=&#039;http://snaps.php-tools.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;snaps.php-tools.net&lt;/a&gt;. 
    </content:encoded>

    <pubDate>Fri, 29 Apr 2005 12:26:41 +0200</pubDate>
    <guid isPermaLink="false">http://blog.temple-du-argh.net/archives/71-guid.html</guid>
    
</item>
<item>
    <title>L'édition 03/05 du International PHP Magazine est là</title>
    <link>http://blog.temple-du-argh.net/archives/69-Ledition-0305-du-International-PHP-Magazine-est-la.html</link>
            <category>PHP</category>
    
    <comments>http://blog.temple-du-argh.net/archives/69-Ledition-0305-du-International-PHP-Magazine-est-la.html#comments</comments>
    <wfw:comment>http://blog.temple-du-argh.net/wfwcomment.php?cid=69</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.temple-du-argh.net/rss.php?version=2.0&amp;type=comments&amp;cid=69</wfw:commentRss>
    

    <author>nospam@example.com (Argh)</author>
    <content:encoded>
    La &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=637&amp;amp;entry_id=69&quot; title=&quot;http://www.php-mag.net/weblogs/ipm_phpconf_04/archives/37-Enterprise-Showcase-in-Latest-PHP-Magazine-Issue-03.05.html&quot;  onmouseover=&quot;window.status=&#039;http://www.php-mag.net/weblogs/ipm_phpconf_04/archives/37-Enterprise-Showcase-in-Latest-PHP-Magazine-Issue-03.05.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;nouvelle édition&lt;/a&gt; du &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=638&amp;amp;entry_id=69&quot; title=&quot;http://www.php-mag.net&quot;  onmouseover=&quot;window.status=&#039;http://www.php-mag.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;International PHP Magazine&lt;/a&gt; est un petit coup de maître, vu qu&#039;on y a fait une combo x 3: vous y trouverez l&#039;article &#039;Go OO!&#039; de &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=639&amp;amp;entry_id=69&quot; title=&quot;http://pear.php.net/user/schst&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/user/schst&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Stéphane&lt;/a&gt;, l&#039;article &#039;Painless Holiday Calculation with PEAR:: Date_Holidays&#039; de &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=640&amp;amp;entry_id=69&quot; title=&quot;http://www.tool-garage.de&quot;  onmouseover=&quot;window.status=&#039;http://www.tool-garage.de&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Carsten&lt;/a&gt; et mon article &#039;Web Forms &amp;amp; a Cuppa Tea Please&#039; &lt;img src=&quot;http://blog.temple-du-argh.net/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;  
    </content:encoded>

    <pubDate>Fri, 22 Apr 2005 13:33:14 +0200</pubDate>
    <guid isPermaLink="false">http://blog.temple-du-argh.net/archives/69-guid.html</guid>
    
</item>
<item>
    <title>Remise à neuf de php-tools.net</title>
    <link>http://blog.temple-du-argh.net/archives/64-Remise-a-neuf-de-php-tools.net.html</link>
            <category>php-tools</category>
    
    <comments>http://blog.temple-du-argh.net/archives/64-Remise-a-neuf-de-php-tools.net.html#comments</comments>
    <wfw:comment>http://blog.temple-du-argh.net/wfwcomment.php?cid=64</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.temple-du-argh.net/rss.php?version=2.0&amp;type=comments&amp;cid=64</wfw:commentRss>
    

    <author>nospam@example.com (Argh)</author>
    <content:encoded>
    Traduction du billet &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=596&amp;amp;entry_id=64&quot; title=&quot;http://blog.php-tools.net/archives/121-php-tools.net-relaunch-plans.html&quot;  onmouseover=&quot;window.status=&#039;http://blog.php-tools.net/archives/121-php-tools.net-relaunch-plans.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;&#039;php-tools.net relaunch plans&#039;&lt;/a&gt; de  php-tools:&lt;br /&gt;
&lt;br /&gt;
Nous avons décidé de faire une remise à neuf du site &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=597&amp;amp;entry_id=64&quot; title=&quot;http://www.php-tools.net&quot;  onmouseover=&quot;window.status=&#039;http://www.php-tools.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;php-tools.net&lt;/a&gt;, et aimerions savoir si vous avez des idées comment nous pouvons l&#039;améliorer. Nous savons déjà assez bien ce que nous allons faire, mais vous pouvez encore nous aider. Dites-nous simplement ce qui vous plaisait le moins et le plus sur le site actuel, et quelles fonctions vous manquaient le plus. Envoyez-moi un mail à argh [@] php-tools [.] net avec vous idées / critiques / demandes de fonctionnalités.&lt;br /&gt;
&lt;br /&gt;
Merci d&#039;avance de toute l&#039;équipe! 
    </content:encoded>

    <pubDate>Tue, 12 Apr 2005 13:51:41 +0200</pubDate>
    <guid isPermaLink="false">http://blog.temple-du-argh.net/archives/64-guid.html</guid>
    
</item>
<item>
    <title>Nouveau serveur de canaux pat</title>
    <link>http://blog.temple-du-argh.net/archives/65-Nouveau-serveur-de-canaux-pat.html</link>
            <category>php-tools</category>
    
    <comments>http://blog.temple-du-argh.net/archives/65-Nouveau-serveur-de-canaux-pat.html#comments</comments>
    <wfw:comment>http://blog.temple-du-argh.net/wfwcomment.php?cid=65</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.temple-du-argh.net/rss.php?version=2.0&amp;type=comments&amp;cid=65</wfw:commentRss>
    

    <author>nospam@example.com (Argh)</author>
    <content:encoded>
    Traduction du billet &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=604&amp;amp;entry_id=65&quot; title=&quot;http://blog.php-tools.net/archives/120-All-new-pat-channel-server.html&quot;  onmouseover=&quot;window.status=&#039;http://blog.php-tools.net/archives/120-All-new-pat-channel-server.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;&#039;All new pat channel server&#039;&lt;/a&gt; de php-tools:&lt;br /&gt;
&lt;br /&gt;
Depuis que &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=605&amp;amp;entry_id=65&quot; title=&quot;http://pear.php.net/user/cellog&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/user/cellog&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Greg Beaver&lt;/a&gt; a inventé la classe PEAR_Server et que &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=606&amp;amp;entry_id=65&quot; title=&quot;http://pear.php.net/user/davey&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/user/davey&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Davey Shafik&lt;/a&gt; a crée un &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=607&amp;amp;entry_id=65&quot; title=&quot;http://pear.crtx.org/index.php?categories&quot;  onmouseover=&quot;window.status=&#039;http://pear.crtx.org/index.php?categories&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;package très pratique&lt;/a&gt; pour mettre en place sa propre interface pour un serveur de canaux PEAR, ça nous démangeait d&#039;en faire un pour pat. Stéphane a installé l&#039;interface sur &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=608&amp;amp;entry_id=65&quot; title=&quot;http://pear.php-tools.net&quot;  onmouseover=&quot;window.status=&#039;http://pear.php-tools.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;pear.php-tools.net&lt;/a&gt;, et après que mes yeux de designer ont arrêté de saigner en voyant la mise en page par défaut de la bête (@Davey: je sais que ce n&#039;est qu&#039;un exemple &lt;img src=&quot;http://blog.temple-du-argh.net/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; ), j&#039;ai fait un petit design pour pat et c&#039;est parti. &lt;br /&gt;
&lt;br /&gt;
Pour l&#039;instant seulement quatre de nos librairies sont disponibles par notre canal, mais nous allons ajouter les autres au fur et à mesure.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez trouver plus d&#039;infos sur PEAR_Server dans le &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=609&amp;amp;entry_id=65&quot; title=&quot;http://greg.chiaraquartet.net/categories/3-PEAR&quot;  onmouseover=&quot;window.status=&#039;http://greg.chiaraquartet.net/categories/3-PEAR&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;blog de Greg&lt;/a&gt;, ainsi que sur l&#039;interface de Davey dans &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=610&amp;amp;entry_id=65&quot; title=&quot;http://pixelated-dreams.com/categories/13-PEAR&quot;  onmouseover=&quot;window.status=&#039;http://pixelated-dreams.com/categories/13-PEAR&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;son blog&lt;/a&gt;. 
    </content:encoded>

    <pubDate>Wed, 06 Apr 2005 15:56:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.temple-du-argh.net/archives/65-guid.html</guid>
    
</item>
<item>
    <title>Nouvelles versions de patTemplate et patConfiguration</title>
    <link>http://blog.temple-du-argh.net/archives/66-Nouvelles-versions-de-patTemplate-et-patConfiguration.html</link>
            <category>php-tools</category>
    
    <comments>http://blog.temple-du-argh.net/archives/66-Nouvelles-versions-de-patTemplate-et-patConfiguration.html#comments</comments>
    <wfw:comment>http://blog.temple-du-argh.net/wfwcomment.php?cid=66</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.temple-du-argh.net/rss.php?version=2.0&amp;type=comments&amp;cid=66</wfw:commentRss>
    

    <author>nospam@example.com (Argh)</author>
    <content:encoded>
    Traduction du billet &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=611&amp;amp;entry_id=66&quot; title=&quot;http://blog.php-tools.net/archives/119-New-releases-of-patConfiguration-and-patTemplate.html&quot;  onmouseover=&quot;window.status=&#039;http://blog.php-tools.net/archives/119-New-releases-of-patConfiguration-and-patTemplate.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;&#039;New releases of patConfiguration and patTemplate&#039;&lt;/a&gt; de php-tools:&lt;br /&gt;
&lt;br /&gt;
Hier Stéphane a publié &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=612&amp;amp;entry_id=66&quot; title=&quot;http://www.php-tools.net/patTemplate&quot;  onmouseover=&quot;window.status=&#039;http://www.php-tools.net/patTemplate&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;patTemplate 3.1.0a1&lt;/a&gt;, la premiere version alpha de la branche 3.1 de la librairie. Cette version ajoute des dizaines de nouvelles fonctions, et même si elle est encore alpha elle est déjà très stable. Stéphane l&#039;utilise même dans un de ses projets avec près de 400.000 visiteurs par jour.&lt;br /&gt;
&lt;br /&gt;
La version v2.0.0b2 de &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=613&amp;amp;entry_id=66&quot; title=&quot;http://www.php-tools.net/patConfiguration&quot;  onmouseover=&quot;window.status=&#039;http://www.php-tools.net/patConfiguration&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;patConfiguration &lt;/a&gt; contient principalement des corrections, et est censée être la dernière version avant la publication de la premiere version estampillée stable. &lt;br /&gt;
&lt;br /&gt;
Si vous utilisez une de ces librairies et ces versions, testez-les et &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=614&amp;amp;entry_id=66&quot; title=&quot;http://bugs.php-tools.net&quot;  onmouseover=&quot;window.status=&#039;http://bugs.php-tools.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;signalez tous les bogues&lt;/a&gt; que vous trouvez. Si vous utilisez PEAR 1.4.0, vous pouvez aussi les installer par notre &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=615&amp;amp;entry_id=66&quot; title=&quot;http://pear.php-tools.net&quot;  onmouseover=&quot;window.status=&#039;http://pear.php-tools.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;serveur de canaux&lt;/a&gt;. 
    </content:encoded>

    <pubDate>Wed, 06 Apr 2005 15:48:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.temple-du-argh.net/archives/66-guid.html</guid>
    
</item>
<item>
    <title>Article sur patForms dans le International PHP Magazine</title>
    <link>http://blog.temple-du-argh.net/archives/62-Article-sur-patForms-dans-le-International-PHP-Magazine.html</link>
            <category>PHP</category>
    
    <comments>http://blog.temple-du-argh.net/archives/62-Article-sur-patForms-dans-le-International-PHP-Magazine.html#comments</comments>
    <wfw:comment>http://blog.temple-du-argh.net/wfwcomment.php?cid=62</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.temple-du-argh.net/rss.php?version=2.0&amp;type=comments&amp;cid=62</wfw:commentRss>
    

    <author>nospam@example.com (Argh)</author>
    <content:encoded>
    Hier j&#039;ai reçu la confirmation que mon article sur &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=584&amp;amp;entry_id=62&quot; title=&quot;http://www.php-tools.net/site.php?file=patForms/overview.xml&quot;  onmouseover=&quot;window.status=&#039;http://www.php-tools.net/site.php?file=patForms/overview.xml&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;patForms&lt;/a&gt; (en) va paraître dans le prochain numéro (03.05) du &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=585&amp;amp;entry_id=62&quot; title=&quot;http://www.php-mag.net/&quot;  onmouseover=&quot;window.status=&#039;http://www.php-mag.net/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;International PHP Magazine&lt;/a&gt; (en). Pour ceux qui ne connaissent pas encore patForms, c&#039;est une librairie qui permet de générer des formulaires. Ce qui la démarque des autres, c&#039;est avant tout sa simplicité et le fait qu&#039;on a le contrôle total de la mise en page et du visuel du formulaire. patForms est un projet de l&#039;équipe de &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=586&amp;amp;entry_id=62&quot; title=&quot;http://www.php-tools.net&quot;  onmouseover=&quot;window.status=&#039;http://www.php-tools.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHP Application Tools&lt;/a&gt; (en), développé par &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=587&amp;amp;entry_id=62&quot; title=&quot;http://pear.php.net/user/schst&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/user/schst&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Stéphane&lt;/a&gt; (en), &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=588&amp;amp;entry_id=62&quot; title=&quot;http://oz.exit0.net&quot;  onmouseover=&quot;window.status=&#039;http://oz.exit0.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;gERD&lt;/a&gt; (en|de) et moi-même.&lt;br /&gt;
&lt;br /&gt;
Mon article est scindé en deux parties, et la première partie qui va sortir bientôt présente l&#039;architecture et les possiblilités de base façon tutoriel avec beaucoup d&#039;exemples. Dans la deuxième partie, j&#039;insisterai sur la gestion des évènements, les observateurs, filtres et autres. Pour découvrir patForms c&#039;est l&#039;idéal, surtout que la seule source d&#039;informations à l&#039;heure actuelle est la &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=589&amp;amp;entry_id=62&quot; title=&quot;http://examples.php-tools.net/patForms/examples/&quot;  onmouseover=&quot;window.status=&#039;http://examples.php-tools.net/patForms/examples/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;collection d&#039;exemples&lt;/a&gt; (en), qui est très fournie et bien documentée.&lt;br /&gt;
&lt;br /&gt;
Et pourquoi encore une libraire de gestion de formulaires, me direz-vous - il est vrai qu&#039;il y en a beaucoup, mais j&#039;en avais marre de me battre avec des solutions jamais optimales, et je trouve que même des outils très plébiscités comme PEAR::QuickForm sont trop hermétiques et pas assez flexibles. Pourquoi? Parce-que je veux que ce soit intuitif. Si il faut que je tape 60+ de lignes de code super-cryptique juste pour afficher trois champs de formulaire, non merci. Et c&#039;est là la vraie force de patForms: c&#039;est super simple à utiliser - voilà tout ce qu&#039;il faut pour créer un formulaire qui se valide tout seul:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
// inclure les classes nécessaires&lt;br /&gt;
require_once &#039;pat/patForms.php&#039;;&lt;br /&gt;
require_once &#039;pat/patForms/Parser.php&#039;;&lt;br /&gt;
require_once &#039;pat/patErrorManager.php&#039;;&lt;br /&gt;
&lt;br /&gt;
// définir les options essentielles&lt;br /&gt;
patForms_Parser::setNamespace( &quot;patForms&quot; );&lt;br /&gt;
patForms_Parser::setCacheDir( &quot;cache&quot; );&lt;br /&gt;
&lt;br /&gt;
// créer l&#039;objet formulaire à partir d&#039;un template&lt;br /&gt;
$form =&amp;amp; patForms_Parser::createFormFromTemplate( &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&#039;SimpleRenderer&#039;, &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&#039;templates/form.fhtml&#039;,&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&#039;templates/form.html&#039;&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
// dire au formulaire de se valider tout seul&lt;br /&gt;
$form-&gt;setAutoValidate( &#039;save&#039; );&lt;br /&gt;
&lt;br /&gt;
// afficher le formulaire&lt;br /&gt;
echo $form-&gt;renderForm();&lt;br /&gt;
&lt;br /&gt;
// le formulaire a-t-il été envoyé?&lt;br /&gt;
if( $form-&gt;isSubmitted() ) {&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;// des erreurs de validation?&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;$errors = $form-&gt;getValidationErrors();&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;if( $errors ) {&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;// afficher les erreurs&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;} else {&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;// faire qq-chose avec les données&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$values = $form-&gt;getValues();&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;
}&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;intéressant ici, c&#039;est surtout le template de formulaire &lt;img src=&quot;http://blog.temple-du-argh.net/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; Le parseur de patForms permet de générer un objet patForms à partir d&#039;un fichier html ou encore un template patTemplate. Dans ce cas-ci, c&#039;est un ficheir html qui pourrait avoir le contenu suivant:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;title&amp;gt;Faut être logué...&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;lt;patForms:Form name=&quot;foo&quot;&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;patForms:Hidden name=&quot;caché&quot; default=&quot;zutaseluikilalu&quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;div id=&quot;login&quot;&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;Pseudo: &amp;lt;patForms:String name=&quot;username&quot; required=&quot;yes&quot; size=&quot;8&quot; maxlength=&quot;8&quot;/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;Passe: &amp;lt;patForms:String name=&quot;password&quot; type=&quot;password&quot; required=&quot;yes&quot; size=&quot;6&quot; maxlength=&quot;6&quot;/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;lt;/patForms:Form&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
On peut donc écrire ses formulaires comme on le faisait avec un formulaire traditionnel, et ainsi avoir le contrôle complet du visuel. Bien sûr patForms offre aussi des méthodes simples pour créer des formulaires de manière dynamique, le parseur n&#039;est qu&#039;un addon.&lt;br /&gt;
&lt;br /&gt;
Allez hop, j&#039;en retourne à mes occupations mondaines - plus précisément la préparation des crèpes au sarrazin &lt;img src=&quot;http://blog.temple-du-argh.net/templates/default/img/emoticons/laugh.png&quot; alt=&quot;:-D&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; 
    </content:encoded>

    <pubDate>Wed, 23 Mar 2005 17:36:31 +0100</pubDate>
    <guid isPermaLink="false">http://blog.temple-du-argh.net/archives/62-guid.html</guid>
    
</item>
<item>
    <title>Publication de patConfiguration v2.0.0b1</title>
    <link>http://blog.temple-du-argh.net/archives/67-Publication-de-patConfiguration-v2.0.0b1.html</link>
            <category>php-tools</category>
    
    <comments>http://blog.temple-du-argh.net/archives/67-Publication-de-patConfiguration-v2.0.0b1.html#comments</comments>
    <wfw:comment>http://blog.temple-du-argh.net/wfwcomment.php?cid=67</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.temple-du-argh.net/rss.php?version=2.0&amp;type=comments&amp;cid=67</wfw:commentRss>
    

    <author>nospam@example.com (Argh)</author>
    <content:encoded>
    Traduction du billet &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=622&amp;amp;entry_id=67&quot; title=&quot;http://blog.php-tools.net/archives/117-patConfiguration-2.0.0b1-released.html&quot;  onmouseover=&quot;window.status=&#039;http://blog.php-tools.net/archives/117-patConfiguration-2.0.0b1-released.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;&#039;patConfiguration 2.0.0b1 released&#039;&lt;/a&gt; de php-tools:&lt;br /&gt;
&lt;br /&gt;
Stéphane a publié la première beta publique de son lecteur de configurations &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=623&amp;amp;entry_id=67&quot; title=&quot;http://www.php-tools.net/site.php?file=patConfiguration/overview.xml&quot;  onmouseover=&quot;window.status=&#039;http://www.php-tools.net/site.php?file=patConfiguration/overview.xml&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;patConfiguration&lt;/a&gt;. À partir de cette version, la classe est basée sur des drivers avec une architecture unifiée pour lire les configurations à partir de fichiers XML, INI et WDDX avec la même interface.&lt;br /&gt;
&lt;br /&gt;
Le driver XML est le plus puissant, puisqu&#039;il permet de définier commetn les balises doivent être traitées. Il est ainsi par ex. possible de définir une balise &amp;lt;foo one=&quot;1&quot; bar=&quot;totmato&quot;/&amp;gt; pour qu&#039;elle soit automatiquement convertie en tableau avec les attributs comme clés et valeurs. Bien sûr on peut aussi choisir pour chaque attribut quel type de variable y est stocké pour que les valeurs soient automatiquement convertis en valeurs booléennes, nombres, chaînesde caractère et même des objets.&lt;br /&gt;
&lt;br /&gt;
Pour cela, patConfiguration propose une balise spéciale très simple:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&amp;lt;!-- définir un espace de nom --&amp;gt;&lt;br /&gt;
&amp;lt;define ns=&quot;boutique&quot;&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;!-- définir une balise dans un espace de nom --&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;define tag=&quot;articles&quot; type=&quot;array&quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;!-- définir une balise sans nom (tableau indexé) --&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;define tag=&quot;article&quot; name=&quot;_none&quot; type=&quot;array&quot;&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;!-- définir trois attributs pour cette balise --&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;define attribute=&quot;vendeur&quot; type=&quot;string&quot;/&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;define attribute=&quot;titre&quot; type=&quot;string&quot;/&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;define attribute=&quot;prix&quot; type=&quot;float&quot; default=&quot;99.99&quot;/&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;/define&amp;gt;&lt;br /&gt;
&amp;lt;/define&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Maintenant que les balises sont définies et que patConfiguration sait comment les integréter, on peut les utliser dans la configuration XML:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&amp;lt;boutique:articles&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;boutique:article titre=&quot;Hache médiévale&quot; vendeur=&quot;&lt;acronym title=&quot;La divinité antique de l&#039;absurde&quot;&gt;Argh&lt;/acronym&gt;&quot;/&amp;gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;boutique:article titre=&quot;Oeuf de dragon&quot; vendeur=&quot;Merlin&quot; prix=&quot;500&quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/boutique:articles&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Lire cette configuration à partir d&#039;un fichier est très simple:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&amp;lt;?php&lt;br /&gt;
$conf&amp;#160;=&amp;#160;new	patConfiguration(&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;array(&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&#039;configDir&#039;&amp;#160;=&gt;&amp;#160;&#039;./config&#039;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; )&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; );&lt;br /&gt;
//&amp;#160;parse&amp;#160;config&amp;#160;file&lt;br /&gt;
$conf-&gt;loadConfig(&#039;example_define_basic.xml&#039;);&lt;br /&gt;
&lt;br /&gt;
$config&amp;#160;=&amp;#160;$conf-&amp;gt;getConfigValue(&#039;articles&#039;);&lt;br /&gt;
?&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Si vous êtes inquiet que le temps que de parser des fichiers XML à chaque requête ralentit votre application, vous pouvez activer le système de cache qui rend le chargement encore plus rapide que de stocker la configuration dans un fichier PHP. Si vous voulez utiliser les définitions des balises dans plusieurs fichiers, vous pouvez utiliser des entités externes ou des balises xInclude - patConfiguration gère les deux, même sous PHP4.&lt;br /&gt;
&lt;br /&gt;
Après chargement avec patConfiguration, voilà le tableau résultant de notre exemple:&lt;br /&gt;
&lt;code&gt;Array&lt;br /&gt;
(&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;[0]&amp;#160;=&gt;&amp;#160;Array&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;(&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;[vendeur]&amp;#160;=&gt;&amp;#160;&lt;acronym title=&quot;La divinité antique de l&#039;absurde&quot;&gt;Argh&lt;/acronym&gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;[titre]&amp;#160;=&gt;&amp;#160;Hache&amp;#160;Médiévale&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;[prix]&amp;#160;=&gt;&amp;#160;99.99&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; )&lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;[1]&amp;#160;=&gt;&amp;#160;Array&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;(&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;[vendeur]&amp;#160;=&gt;&amp;#160;Merlin&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;[titre]&amp;#160;=&gt;&amp;#160;Oeuf&amp;#160;de&amp;#160;dragon&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;[prix]&amp;#160;=&gt;&amp;#160;500&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; )&lt;br /&gt;
)&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
patConfiguration permet en outre d&#039;accéder à la configuration complète, ou juste des parties en utilisant une mixture de la syntaxe d&#039;accès aux tableaux dans PHP et de syntaxe de chemins à la JavaScript (boutique.articles[0], par ex.) Pour voir la liste complète des possibilités qu&#039;offre patConfiguration, il y a les &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=624&amp;amp;entry_id=67&quot; title=&quot;http://examples.php-tools.net/patConfiguration/examples/&quot;  onmouseover=&quot;window.status=&#039;http://examples.php-tools.net/patConfiguration/examples/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;exemples en ligne&lt;/a&gt; ou vous pouvez télécharger le &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=625&amp;amp;entry_id=67&quot; title=&quot;http://www.php-tools.net/site.php?file=patConfiguration/download.xml&quot;  onmouseover=&quot;window.status=&#039;http://www.php-tools.net/site.php?file=patConfiguration/download.xml&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;package entier&lt;/a&gt; par  notre site.&lt;br /&gt;
&lt;br /&gt;
Si vous utilisez déjà PEAT 1.4.0, vous pouvez aussi l&#039;installer par notre &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=626&amp;amp;entry_id=67&quot; title=&quot;http://pear.php-tools.net&quot;  onmouseover=&quot;window.status=&#039;http://pear.php-tools.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;serveur de canaux&lt;/a&gt;:&lt;br /&gt;
&lt;code&gt;$ pear channel-discover pear.php-tools.net&lt;br /&gt;
$ pear install --alldeps pat/patConfiguration&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
En cas de bogue, utilisez notre &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=627&amp;amp;entry_id=67&quot; title=&quot;http://bugs.php-tools.net&quot;  onmouseover=&quot;window.status=&#039;http://bugs.php-tools.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;patBugzilla&lt;/a&gt;. 
    </content:encoded>

    <pubDate>Sun, 06 Mar 2005 11:54:00 +0100</pubDate>
    <guid isPermaLink="false">http://blog.temple-du-argh.net/archives/67-guid.html</guid>
    
</item>
<item>
    <title>Bienvenue à Daniel, nouveau membre de l'équipe php-tools</title>
    <link>http://blog.temple-du-argh.net/archives/57-Bienvenue-a-Daniel,-nouveau-membre-de-lequipe-php-tools.html</link>
            <category>php-tools</category>
    
    <comments>http://blog.temple-du-argh.net/archives/57-Bienvenue-a-Daniel,-nouveau-membre-de-lequipe-php-tools.html#comments</comments>
    <wfw:comment>http://blog.temple-du-argh.net/wfwcomment.php?cid=57</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.temple-du-argh.net/rss.php?version=2.0&amp;type=comments&amp;cid=57</wfw:commentRss>
    

    <author>nospam@example.com (Argh)</author>
    <content:encoded>
    Traduction du billet &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=569&amp;amp;entry_id=57&quot; title=&quot;http://blog.php-tools.net/archives/114-Welcome-to-patPortal,-Wiegi.html&quot;  onmouseover=&quot;window.status=&#039;http://blog.php-tools.net/archives/114-Welcome-to-patPortal,-Wiegi.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;&#039;Welcome to patPortal, Wiegi&#039;&lt;/a&gt; de php-tools:&lt;br /&gt;
&lt;br /&gt;
Depuis hier, Daniel a rejoint l&#039;équipe de php-tools. Participant à la traditionnelle soirée programmation chaque mardi, il a d&#039;ailleurs faite une entrée haute en couleurs en contribuant une nouveau filtre de réponse à &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=570&amp;amp;entry_id=57&quot; title=&quot;http://cvs.php-tools.net/horde/chora/cvs.php/patPortal/&quot;  onmouseover=&quot;window.status=&#039;http://cvs.php-tools.net/horde/chora/cvs.php/patPortal/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;patPortal&lt;/a&gt;. patPortal est un système de création d&#039;applications Web basé sur un ensemble de composantes interconnectées. La grande particularité du projet est le très haut niveau d&#039;abstraction - en effet, on n&#039;accède par ex. jamais directement aux données d&#039;une requête (GET, POST...), seulement par le biais d&#039;un objet de requête. Le grand avantage étant que la même interface peut être utilisée pour des applications basées sur le protocole HTTP, sur des requêtes SOAP ou encore des applications CLI (ligne de commande).&lt;br /&gt;
&lt;br /&gt;
Le même principe s&#039;applique donc aux réponses - toutes les données sortantes de l&#039;application passent par un objet de réponse. Le filtre de réponse de Daniel, &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=571&amp;amp;entry_id=57&quot; title=&quot;http://cvs.php-tools.net/horde/chora/cvs.php/patPortal/patPortal/Filter/Response/StripWhitespace.php?login=2&quot;  onmouseover=&quot;window.status=&#039;http://cvs.php-tools.net/horde/chora/cvs.php/patPortal/patPortal/Filter/Response/StripWhitespace.php?login=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;StripWhitespace&lt;/a&gt;, permet d&#039;enlever les espaces des données sortantes avant qu&#039;elles ne soient envoyées.&lt;br /&gt;
&lt;br /&gt;
Bienvenue donc à Daniel! Vous pouvez le joindre par son adresse wiegi[at]php-tools[dot]net (en anglais, de préférence, vu qu&#039;il est allemand comme tout le reste de l&#039;équipe - sans me compter moi, bien sûr...). 
    </content:encoded>

    <pubDate>Wed, 16 Feb 2005 16:34:34 +0100</pubDate>
    <guid isPermaLink="false">http://blog.temple-du-argh.net/archives/57-guid.html</guid>
    
</item>
<item>
    <title>Nouvelle version de PEAR::Date_Holidays</title>
    <link>http://blog.temple-du-argh.net/archives/56-Nouvelle-version-de-PEARDate_Holidays.html</link>
            <category>php-tools</category>
    
    <comments>http://blog.temple-du-argh.net/archives/56-Nouvelle-version-de-PEARDate_Holidays.html#comments</comments>
    <wfw:comment>http://blog.temple-du-argh.net/wfwcomment.php?cid=56</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.temple-du-argh.net/rss.php?version=2.0&amp;type=comments&amp;cid=56</wfw:commentRss>
    

    <author>nospam@example.com (Argh)</author>
    <content:encoded>
    &lt;img width=&#039;32&#039; height=&#039;32&#039; style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://blog.temple-du-argh.net/uploads/pear-icon.gif&quot; alt=&quot;&quot; /&gt; Traduction du billet &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=559&amp;amp;entry_id=56&quot; title=&quot;http://blog.php-tools.net/archives/113-New-release-of-PEARDate_Holidays.html&quot;  onmouseover=&quot;window.status=&#039;http://blog.php-tools.net/archives/113-New-release-of-PEARDate_Holidays.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;&#039;New release of PEAR:: Date_Holidays&#039;&lt;/a&gt; de php-tools:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=560&amp;amp;entry_id=56&quot; title=&quot;http://pear.php.net/user/luckec&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/user/luckec&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Carsten&lt;/a&gt; a publié une nouvelle version de &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=561&amp;amp;entry_id=56&quot; title=&quot;http://pear.php.net/package/Date_Holidays&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/package/Date_Holidays&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Date_Holidays&lt;/a&gt;, la v0.13.0. Cette librairie disponible dans PEAR est spécialisée pour les calculs de jours fériés ou autres jours spéciaux.&lt;br /&gt;
&lt;br /&gt;
Carsten est aussi en train d&#039;écrire un article à ce sujet pour le prochain numéro du &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=562&amp;amp;entry_id=56&quot; title=&quot;http://php-mag.net&quot;  onmouseover=&quot;window.status=&#039;http://php-mag.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;International PHP-Magazine&lt;/a&gt;, ce qui lui a donné l&#039;idée pour quelques nouvelles fonctionnalités:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Il a adapté les calculs existants et ajouté un nouveau driver qui calcule les anniversaires des gens qui ont bien voulu nous donner leur date de naissance (voir mon &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=563&amp;amp;entry_id=56&quot; title=&quot;http://blog.temple-du-argh.net/index.php?/archives/54-Le-jour-de-votre-naissance....html&quot;  onmouseover=&quot;window.status=&#039;http://blog.temple-du-argh.net/index.php?/archives/54-Le-jour-de-votre-naissance....html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;billet précédent&lt;/a&gt; à ce sujet).&lt;/li&gt;&lt;li&gt;Il a ajouté des objects filtre qui permettent de filtrer les dates calculées à l&#039;aide de blacklists, whitelists et filtres composites.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=564&amp;amp;entry_id=56&quot; title=&quot;http://schst.net&quot;  onmouseover=&quot;window.status=&#039;http://schst.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Stéphane&lt;/a&gt; a une fois de plus pu contribuer en conseils et relecture de l&#039;article &lt;img src=&quot;http://blog.temple-du-argh.net/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Pour tous ceux qui ont déjà été confronté au calcul de dates un peu spéciales, cette librairie et l&#039;article à paraître sont un bon point de départ pour se rendre la vie plus facile. D&#039;après le International PHP Magazine, l&#039;article de Carsten sera &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=565&amp;amp;entry_id=56&quot; title=&quot;http://www.phpmag.net/itr/news/psecom,id,20030,nodeid,113.html&quot;  onmouseover=&quot;window.status=&#039;http://www.phpmag.net/itr/news/psecom,id,20030,nodeid,113.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;disponible online&lt;/a&gt; un peu après la parution du magazine. 
    </content:encoded>

    <pubDate>Wed, 16 Feb 2005 16:11:52 +0100</pubDate>
    <guid isPermaLink="false">http://blog.temple-du-argh.net/archives/56-guid.html</guid>
    
</item>
<item>
    <title>Le jour de votre naissance...</title>
    <link>http://blog.temple-du-argh.net/archives/54-Le-jour-de-votre-naissance....html</link>
            <category>php-tools</category>
    
    <comments>http://blog.temple-du-argh.net/archives/54-Le-jour-de-votre-naissance....html#comments</comments>
    <wfw:comment>http://blog.temple-du-argh.net/wfwcomment.php?cid=54</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.temple-du-argh.net/rss.php?version=2.0&amp;type=comments&amp;cid=54</wfw:commentRss>
    

    <author>nospam@example.com (Argh)</author>
    <content:encoded>
    &lt;img width=&#039;32&#039; height=&#039;32&#039; style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://blog.temple-du-argh.net/uploads/pear-icon.gif&quot; alt=&quot;&quot; /&gt; Traduction du billet &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=572&amp;amp;entry_id=54&quot; title=&quot;http://blog.php-tools.net/archives/112-The-day-you-were-born-....html&quot;  onmouseover=&quot;window.status=&#039;http://blog.php-tools.net/archives/112-The-day-you-were-born-....html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;&#039;The day you were born ...&#039;&lt;/a&gt; de php-tools:&lt;br /&gt;
&lt;br /&gt;
Pour tous ceux d&#039;entre vous qui font partie des développeurs PEAR: &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=573&amp;amp;entry_id=54&quot; title=&quot;http://pear.php.net/user/luckec&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/user/luckec&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Carsten&lt;/a&gt; aimerait que vous lui donniez votre date et lieu de naissance pour son projet Date_Holidays. Il est en train de programmer un Driver pour calculer les anniversaires de tous les contributeurs de php.net dans le cadre d&#039;un article qu&#039;il écrit pour le magazine PHP international.&lt;br /&gt;
&lt;br /&gt;
Il a besoin de votre:&lt;br /&gt;
&lt;br /&gt;
- nom&lt;br /&gt;
- date de naissance&lt;br /&gt;
- pays&lt;br /&gt;
&lt;br /&gt;
Envoyez-lui un email avec ces informations à l&#039;adresse suivante: &lt;b&gt;luckec -at- php -dot- net&lt;/b&gt;. Merci d&#039;avance!&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Fri, 11 Feb 2005 10:43:19 +0100</pubDate>
    <guid isPermaLink="false">http://blog.temple-du-argh.net/archives/54-guid.html</guid>
    
</item>
<item>
    <title>Publication de Services_Ebay v0.11.0</title>
    <link>http://blog.temple-du-argh.net/archives/50-Publication-de-Services_Ebay-v0.11.0.html</link>
            <category>php-tools</category>
    
    <comments>http://blog.temple-du-argh.net/archives/50-Publication-de-Services_Ebay-v0.11.0.html#comments</comments>
    <wfw:comment>http://blog.temple-du-argh.net/wfwcomment.php?cid=50</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.temple-du-argh.net/rss.php?version=2.0&amp;type=comments&amp;cid=50</wfw:commentRss>
    

    <author>nospam@example.com (Argh)</author>
    <content:encoded>
    Traduction du billet &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=396&amp;amp;entry_id=50&quot; title=&quot;http://blog.php-tools.net/archives/111-Services_Ebay-0.11.0-released.html&quot;  onmouseover=&quot;window.status=&#039;http://blog.php-tools.net/archives/111-Services_Ebay-0.11.0-released.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;&#039;Services_Ebay 0.11.0 released&#039;&lt;/a&gt; de php-tools:&lt;br /&gt;
&lt;br /&gt;
Stéphane a publié une nouvelle version de &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=397&amp;amp;entry_id=50&quot; title=&quot;http://pear.php.net/package/Services_Ebay&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/package/Services_Ebay&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Services_Ebay&lt;/a&gt;, avec deux nouvelles fonctionnalités et plusieurs méthodes. La première fonctionnalité est le système de cache des réponses du WebService d&#039;eBay: intégré dans les modèles de classes de Services_Ebay, ceci permet de mettre les réponses des requêtes faites à eBay dans un cache local pour éviter les temps de transfert souvent assez longs de ces requêtes.&lt;br /&gt;
&lt;br /&gt;
L&#039;utilisation du cache est très simple:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&amp;lt;?php&lt;br /&gt;
$session = Services_Ebay::getSession($devId, $appId, $certId);&lt;br /&gt;
$session-&gt;setToken($token);&lt;br /&gt;
&lt;br /&gt;
// choisir le cache local sous forme de fichiers&lt;br /&gt;
$userCache = Services_Ebay::loadCache(&#039;Filesystem&#039;, array(&#039;path&#039; =&gt; &#039;./cache&#039;));&lt;br /&gt;
&lt;br /&gt;
// le fichier cache expirera après 15 minutes&lt;br /&gt;
$userCache-&gt;setExpiry(&#039;Static&#039;, 15);&lt;br /&gt;
&lt;br /&gt;
// utiliser ce cache pour tous les modèles utilisateur&lt;br /&gt;
Services_Ebay_Model_User::setCache($userCache);&lt;br /&gt;
&lt;br /&gt;
// charger un modèle d&#039;utilisateur&lt;br /&gt;
$user = Services_Ebay::loadModel(&#039;User&#039;, &#039;superman-74&#039;, $session);&lt;br /&gt;
&lt;br /&gt;
if ($user-&gt;isCached()) {&lt;br /&gt;
    echo &#039;donées dans le cache&#039;;&lt;br /&gt;
    print_r($user-&gt;toArray());&lt;br /&gt;
} else {&lt;br /&gt;
    echo &#039;requête des donées online&#039;;&lt;br /&gt;
    $user-&gt;Get();&lt;br /&gt;
&lt;br /&gt;
    print_r($user-&gt;toArray());&lt;br /&gt;
}&lt;br /&gt;
?&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Après avoir instancié un nouveau cache, on définit la durée de validité des données enregistrées. Pour l&#039;instant, il est seulement possible de définir une durée fixe, mais comme les vérifications de durée sont des objets, il est facile d&#039;en ajouter d&#039;autres. Stéphane compte ajouter un objet de vérifiaction de validité qui diminuera automatiquement la durée du cache plus la fin de l&#039;enchère approche. Il pense aussi ajouter un cache qui enregistre les données dans une base de données au lieu de fichiers, pour permettre un stockage plus flexible.&lt;br /&gt;
&lt;br /&gt;
La deuxième fonctionnalité (avec un peu d&#039;aide du fabuleux &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=398&amp;amp;entry_id=50&quot; title=&quot;http://www.trachtenberg.com&quot;  onmouseover=&quot;window.status=&#039;http://www.trachtenberg.com&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Adam Trachtenberg&lt;/a&gt;) est l&#039;implémentation de la recherche de produits. Disponible sur eBay sous forme de fomrulaires permettant de rechercher des produits par une série de critères de recherche, Services_Ebay permet maintenant d&#039;y accéder de manière très simple. eBay offre deux manières d&#039;y accéder:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;par GetProductFinder&lt;/b&gt;, qui livre du XML contentant les informations nécessaires sous forme brute (champs de formulaire et valeurs pour la catégorie de produits choisie)&lt;/li&gt;&lt;li&gt;&lt;b&gt;pat getProductFinderXSL&lt;/b&gt; qui livre la feuille de style XSL qu&#039;eBay utilise pour le rendu du HTML à partir des données XML brutes.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
Comme l&#039;accès à ces données se fait par un modèle dans Services_Ebay, il est tres simple d&#039;y accéder:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&amp;lt;?php&lt;br /&gt;
$session = Services_Ebay::getSession($devId, $appId, $certId);&lt;br /&gt;
$session-&gt;setToken($token);&lt;br /&gt;
$ebay = new Services_Ebay($session);&lt;br /&gt;
&lt;br /&gt;
// charger la feuille de style (enregistrée localement, ce serait trop&lt;br /&gt;
// long de la charger a chaque fois)&lt;br /&gt;
$xsl = file_get_contents(&#039;product_finder.xsl&#039;);&lt;br /&gt;
&lt;br /&gt;
// charger la recherche de produits et l&#039;afficher&lt;br /&gt;
list($productFinder) = $ebay-&gt;GetProductFinder(1909);&lt;br /&gt;
echo $productFinder-&gt;render($xsl);&lt;br /&gt;
}&lt;br /&gt;
?&gt;&lt;/code&gt;&lt;br /&gt;
Ce petit bout de code affiche un formulaire incluant un peu de javascript, permettant à l&#039;utilisateur de choisir ses produits à partir des critères disponibles.&lt;br /&gt;
&lt;br /&gt;
Cette nouvelle version est aussi la première publication incluant des parties contribuées par &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=399&amp;amp;entry_id=50&quot; title=&quot;http://pear.php.net/user/luckec&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/user/luckec&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Carsten Lucke&lt;/a&gt;. Carsten a ajouté des méthodes spécifiques pour les enchères et utilisateurs Néerlandais, ainsi que les modèles nécessaires. 
    </content:encoded>

    <pubDate>Thu, 03 Feb 2005 15:19:00 +0100</pubDate>
    <guid isPermaLink="false">http://blog.temple-du-argh.net/archives/50-guid.html</guid>
    
</item>
<item>
    <title>Tutoriel pour Services_Ebay</title>
    <link>http://blog.temple-du-argh.net/archives/49-Tutoriel-pour-Services_Ebay.html</link>
            <category>php-tools</category>
    
    <comments>http://blog.temple-du-argh.net/archives/49-Tutoriel-pour-Services_Ebay.html#comments</comments>
    <wfw:comment>http://blog.temple-du-argh.net/wfwcomment.php?cid=49</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.temple-du-argh.net/rss.php?version=2.0&amp;type=comments&amp;cid=49</wfw:commentRss>
    

    <author>nospam@example.com (Argh)</author>
    <content:encoded>
    Traduction du billet &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=400&amp;amp;entry_id=49&quot; title=&quot;http://blog.php-tools.net/archives/110-Tutorial-for-Services_Ebay.html&quot;  onmouseover=&quot;window.status=&#039;http://blog.php-tools.net/archives/110-Tutorial-for-Services_Ebay.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;&#039;Tutorial for Services_Ebay&#039;&lt;/a&gt; de php-tools:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=401&amp;amp;entry_id=49&quot; title=&quot;http://www.trachtenberg.com/&quot;  onmouseover=&quot;window.status=&#039;http://www.trachtenberg.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Adam Trachtenberg&lt;/a&gt;, responsable technique chez eBay, a écrit un &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=402&amp;amp;entry_id=49&quot; title=&quot;http://www.onlamp.com/pub/a/php/2005/01/27/ebay_webservices.html&quot;  onmouseover=&quot;window.status=&#039;http://www.onlamp.com/pub/a/php/2005/01/27/ebay_webservices.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;tutoriel d&#039;introduction&lt;/a&gt; à &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=403&amp;amp;entry_id=49&quot; title=&quot;http://pear.php.net/package/Services_Ebay&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/package/Services_Ebay&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Services_Ebay&lt;/a&gt;, la librairie d&#039;accès aux WebServices d&#039;eBay écrite par Stéphane.&lt;br /&gt;
&lt;br /&gt;
Bien que relativement court, ce tutoriel aborde des aspects intéressants de la librairie en montrant les possibilités qu&#039;offre la surcharge (&#039;overloading&#039; en anglais) d&#039;objets. Il montre aussi comment définir ses propres modèles en les utilisant comme couche de présentation avec la méthode __toString().&lt;br /&gt;
&lt;br /&gt;
Pour démarrer avec Services_Ebay, ce tutoriel est une bonne référence. 
    </content:encoded>

    <pubDate>Fri, 28 Jan 2005 14:39:00 +0100</pubDate>
    <guid isPermaLink="false">http://blog.temple-du-argh.net/archives/49-guid.html</guid>
    
</item>
<item>
    <title>Conférence Internationale PHP 2005</title>
    <link>http://blog.temple-du-argh.net/archives/48-Conference-Internationale-PHP-2005.html</link>
            <category>php-tools</category>
    
    <comments>http://blog.temple-du-argh.net/archives/48-Conference-Internationale-PHP-2005.html#comments</comments>
    <wfw:comment>http://blog.temple-du-argh.net/wfwcomment.php?cid=48</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.temple-du-argh.net/rss.php?version=2.0&amp;type=comments&amp;cid=48</wfw:commentRss>
    

    <author>nospam@example.com (Argh)</author>
    <content:encoded>
    Traduction du billet &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=404&amp;amp;entry_id=48&quot; title=&quot;http://blog.php-tools.net/archives/109-International-PHP-2005-Conference-Spring-Edition.html&quot;  onmouseover=&quot;window.status=&#039;http://blog.php-tools.net/archives/109-International-PHP-2005-Conference-Spring-Edition.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;&#039;International PHP 2005 Conference - Spring Edition&#039;&lt;/a&gt; de php-tools:&lt;br /&gt;
&lt;br /&gt;
Stéphane va tenir deux séances à la Conférence Internationale PHP de cette année qui se tiendra à Amsterdam:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;b&gt;Go OO! - Real-life patterns in PHP5&lt;/b&gt;&lt;br /&gt;
Cette séance montrera comment on peut utiliser les nouvelles possibilités de programmation orientée objet avec PHP5, ainsi que les interfaces de la nouvelle librairie SPL.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Component and event-driven architectures in PHP5&lt;/b&gt;&lt;br /&gt;
Cette séance montrera des nouveaux concepts de programmation évenementielle pour rendre vos applications plus flexibles par l&#039;ajout d&#039;une gestion d&#039;évènements.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;
&lt;br /&gt;
Stéphane fera aussi un &#039;Power Workshop&#039; d&#039;une journée intitulé &#039;&lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=405&amp;amp;entry_id=48&quot; title=&quot;http://www.php-conference.com/konferenzen/psecom,id,255,nodeid,.html&quot;  onmouseover=&quot;window.status=&#039;http://www.php-conference.com/konferenzen/psecom,id,255,nodeid,.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;XML and Web services with PHP5 and PEAR&lt;/a&gt;&#039; avec Tobias Schlitt, et qui approfondira l&#039;utilisation de WebServices avec PHP et les librairies disponibles dans PEAR. 
    </content:encoded>

    <pubDate>Mon, 24 Jan 2005 14:18:00 +0100</pubDate>
    <guid isPermaLink="false">http://blog.temple-du-argh.net/archives/48-guid.html</guid>
    
</item>
<item>
    <title>Gestion d'évènements dans PEAR</title>
    <link>http://blog.temple-du-argh.net/archives/46-Gestion-devenements-dans-PEAR.html</link>
            <category>php-tools</category>
    
    <comments>http://blog.temple-du-argh.net/archives/46-Gestion-devenements-dans-PEAR.html#comments</comments>
    <wfw:comment>http://blog.temple-du-argh.net/wfwcomment.php?cid=46</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.temple-du-argh.net/rss.php?version=2.0&amp;type=comments&amp;cid=46</wfw:commentRss>
    

    <author>nospam@example.com (Argh)</author>
    <content:encoded>
    Traduction du billet &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=406&amp;amp;entry_id=46&quot; title=&quot;http://blog.php-tools.net/archives/108-PEAR-is-getting-event-support.html&quot;  onmouseover=&quot;window.status=&#039;http://blog.php-tools.net/archives/108-PEAR-is-getting-event-support.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;&#039;PEAR is getting event support&#039;&lt;/a&gt; de php-tools:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=407&amp;amp;entry_id=46&quot; title=&quot;http://pear.php.net/user/mansion&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/user/mansion&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Bertrand Mansion&lt;/a&gt; (en) a proposé une nouvelle librairie pour inclusion dans PEAR, &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=408&amp;amp;entry_id=46&quot; title=&quot;http://pear.php.net/pepr/pepr-proposal-show.php?id=186&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/pepr/pepr-proposal-show.php?id=186&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Event_Dispatcher&lt;/a&gt; (en). Celle-ci offre une gestion  simple d&#039;évènements facile à intégrer dans une application PHP. Bertrand a déjà démarré &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=409&amp;amp;entry_id=46&quot; title=&quot;http://pear.php.net/pepr/pepr-votes-show.php?id=186&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/pepr/pepr-votes-show.php?id=186&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;l&#039;appel au vote&lt;/a&gt; (en), mais comme nous utilisons déjà cette technique dans &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=410&amp;amp;entry_id=46&quot; title=&quot;http://cvs.php-tools.net/horde/chora/cvs.php/patPortal?login=2&quot;  onmouseover=&quot;window.status=&#039;http://cvs.php-tools.net/horde/chora/cvs.php/patPortal?login=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;patPortal&lt;/a&gt; (en), et Stéphane dans son boulot chez &lt;a href=&quot;http://blog.temple-du-argh.net/exit.php?url_id=411&amp;amp;entry_id=46&quot; title=&quot;http://www.1and1.com&quot;  onmouseover=&quot;window.status=&#039;http://www.1and1.com&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;1et1 allemagne&lt;/a&gt; (de), il l&#039;a essayé:&lt;br /&gt;
&lt;br /&gt;
L&#039;architecture de la librairie est assez simple: la classe Event_Dispatcher peut contenir des observateurs (appels natifs PHP) pour divers types de notifications. Ces observateurs sont informés de chaque évènement par une notification sous la forme d&#039;un objet (la notification) très simple qui contient des informations sur l&#039;évènement. Dans la vie de tous les jours, cette technique permet d&#039;ajouter des fonctionalités à une application existante sans avoir à modifier le  code source. Dans le site de 1et1 dont s&#039;occupe Stéphane, il envoie une notification à chaque commande (évènement onOrder) en y ajoutant l&#039;objet gérant la commande comme information. De cette manière, il est facile d&#039;intégrer nombre d&#039;objects pour par ex. écrire des logs, mettre à jour des cookies ou d&#039;envoyer des suivis à des partenaires affiliés.&lt;br /&gt;
&lt;br /&gt;
L&#039;architecture simple de Event_Dispatcher est un atout, mais on arrive vite à des limites - dans ses essais, Stéphane a trouvé quelques lacunes. La première chose est qu&#039;un observateur ne peut pas annuler (arrêter) un évènement: cela permettrait par ex. d&#039;ajouter une ultime vérification avant que la commande d&#039;un client ne soit envoyée, et d&#039;annuler la commande le cas échéant. La deuxième chose est que la remontée d&#039;évènements (&#039;event bubbling&#039; en anglais) n&#039;est pas possible: cela permettrait des niveaux illimités de gestion dévènements, chaque évènement pouvant remonter toute la hiérarchie des observateurs. Enfin, il n&#039;est pas possible de définir une classe sur mesure pour les notifications (ce qui peut être nécessaire selon le type d&#039;informations qu&#039;on veut y stocker).&lt;br /&gt;
&lt;br /&gt;
Stéphane a implémenté toutes ces fonctionnalités dans le code de Bertrand, en espérant qu&#039;il voudra bien inclure ces changements dans la version officielle de Event_Dispatcher lors de sa publication (si elle est acceptée par la communauté des développeurs de PEAR... votez!). 
    </content:encoded>

    <pubDate>Wed, 19 Jan 2005 13:21:41 +0100</pubDate>
    <guid isPermaLink="false">http://blog.temple-du-argh.net/archives/46-guid.html</guid>
    
</item>

</channel>
</rss>