<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://blog.thebuble.org/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Bubble Sweat Bubble - Tag - php</title>
  <link>http://blog.thebuble.org/</link>
  <atom:link href="http://blog.thebuble.org/feed/tag/php/rss2" rel="self" type="application/rss+xml"/>
  <description>Les périgrinations d'un mec normal dans un monde qui ne l'est franchement pas</description>
  <language>fr</language>
  <pubDate>Sun, 22 Aug 2010 19:53:29 +0200</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Classe DateTime de PHP5</title>
    <link>http://blog.thebuble.org/post/2008/12/23/Classe-DateTime-de-PHP5</link>
    <guid isPermaLink="false">urn:md5:994db0cf31c1423f74223974e2b1645f</guid>
    <pubDate>Tue, 23 Dec 2008 12:02:00 +0100</pubDate>
    <dc:creator>Olivier</dc:creator>
        <category>développement</category>
        <category>datetime</category><category>php</category>    
    <description>    &lt;p&gt;Depuis la version 5.1 une nouvelle classe a fait son apparition&amp;nbsp;: &lt;a href=&quot;http://php.net/date_create&quot;&gt;DateTime&lt;/a&gt;. Cette classe expérimentale dans les versions 5.1 est depuis officiellement incluse depuis les versions 5.2 de PHP.
La liste des fonctions disponibles est &lt;a href=&quot;http://fr2.php.net/manual/en/ref.datetime.php&quot;&gt;ici&lt;/a&gt;. Il suffit de regarder toutes les fonctions commençant par &quot;date_&quot;.&lt;/p&gt;


&lt;p&gt;Quelques exemples d'utilisations&amp;nbsp;:&lt;/p&gt;

&lt;pre class=&quot;php&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;// crée un nouvel objet DateTime&lt;/span&gt;
&lt;span style=&quot;color: #ff0000&quot;&gt;$d&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; DateTime&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;'2008-12-26 23:59:59'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #000066;&quot;&gt;echo&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$d&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #006600;&quot;&gt;format&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;'c'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;// crée un nouvel objet DateTime à partir d'un timestamp UNIX&lt;/span&gt;
&lt;span style=&quot;color: #ff0000&quot;&gt;$ts&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #ff0000&quot;&gt;$d&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; DateTime&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;'@'&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;.&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$ts&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #000066;&quot;&gt;echo&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$d&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #006600;&quot;&gt;format&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;'c'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
try &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;// le constructeur lance une exception si la chaîne de date n'est pas valide&lt;/span&gt;
    &lt;span style=&quot;color: #ff0000&quot;&gt;$d&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; DateTime&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;2008-12-32&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt; catch &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;Exception &lt;span style=&quot;color: #ff0000&quot;&gt;$e&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #000066;&quot;&gt;echo&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;date non valide&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;// l'appel à date_create ne lance pas d'exception&lt;/span&gt;
&lt;span style=&quot;color: #ff0000&quot;&gt;$d&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; date_create&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;2008-12-32&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000&quot;&gt;$d&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;===&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;FALSE&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #000066;&quot;&gt;echo&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;date non valide&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;// date valide&lt;/span&gt;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;J'ai effectué quelques comparaisons avec les fonctions classiques &lt;a href=&quot;http://php.net/strtotime&quot;&gt;strtotime&lt;/a&gt; et &lt;a href=&quot;http://php.net/date&quot;&gt;date&lt;/a&gt; afin de voir si DateTime est ou non plus lente.
J'ai donc écrit un script pour tester les temps de réponses d'un appel à la fonction date avec un appel à strtotime ou avec un timestamp puis la même chose en utilisant DateTime.
Afin d'avoir des valeurs plus cohérentes, j'ai fait la moyenne sur 1000 itérations à chaque fois. Voici le script utilisé&amp;nbsp;:&lt;/p&gt;

&lt;pre class=&quot;php&quot;&gt;&lt;span style=&quot;color: #ff0000&quot;&gt;$nb_iters&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;1000&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #ff0000&quot;&gt;$values&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #000066;&quot;&gt;echo&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;with strtotime: &amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #b1b100;&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000&quot;&gt;$i&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$i&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$nb_iters&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$i&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #ff0000&quot;&gt;$s&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;microtime&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #ff0000&quot;&gt;$ts&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;strtotime&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;'2008-12-25'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #ff0000&quot;&gt;$str&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;'c'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$ts&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #ff0000&quot;&gt;$e&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;microtime&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #ff0000&quot;&gt;$values&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$e&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$s&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #000066;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;%.06f s&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;array_sum&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000&quot;&gt;$values&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$nb_iters&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #ff0000&quot;&gt;$values&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #000066;&quot;&gt;echo&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;without strtotime: &amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #b1b100;&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000&quot;&gt;$i&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$i&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$nb_iters&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$i&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #ff0000&quot;&gt;$s&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;microtime&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #ff0000&quot;&gt;$str&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;'c'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$ts&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #ff0000&quot;&gt;$e&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;microtime&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #ff0000&quot;&gt;$values&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$e&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$s&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #000066;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;%.06f s&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;array_sum&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000&quot;&gt;$values&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$nb_iters&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #ff0000&quot;&gt;$values&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #000066;&quot;&gt;echo&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;with datetime: &amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #b1b100;&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000&quot;&gt;$i&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$i&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$nb_iters&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$i&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #ff0000&quot;&gt;$s&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;microtime&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #ff0000&quot;&gt;$d&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; DateTime&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;'2008-12-26'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #ff0000&quot;&gt;$str&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$d&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #006600;&quot;&gt;format&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;'c'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #ff0000&quot;&gt;$e&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;microtime&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #ff0000&quot;&gt;$values&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$e&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$s&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #000066;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;%.06f s&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;array_sum&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000&quot;&gt;$values&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$nb_iters&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #ff0000&quot;&gt;$values&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #000066;&quot;&gt;echo&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;with datetime given a timestamp: &amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #b1b100;&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000&quot;&gt;$i&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$i&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$nb_iters&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$i&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #ff0000&quot;&gt;$s&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;microtime&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #ff0000&quot;&gt;$d&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; DateTime&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;@$ts&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #ff0000&quot;&gt;$str&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$d&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #006600;&quot;&gt;format&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;'c'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #ff0000&quot;&gt;$e&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;microtime&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #ff0000&quot;&gt;$values&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$e&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$s&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #000066;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;%.06f s&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;array_sum&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000&quot;&gt;$values&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$nb_iters&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;Le résultat obtenu&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
with strtotime: 0.000028 s
without strtotime: 0.000012 s
with datetime: 0.000024 s
with datetime given a timestamp: 0.000054 s
&lt;/pre&gt;


&lt;p&gt;Comme on peut le voir, DateTime se révèle plus rapide qu'un appel conjoint de date et de strtotime. En revanche, si l'on possède déjà un timestamp, mieux vaut utiliser directement la fonction date puisqu'elle est deux fois plus rapide.
DateTime se révèle donc très intéressant pour gérer des dates au format chaînes. En revanche, et c'est lié au design de DateTime, l'utilisation de cette classe avec un timestamp doit être évitée tant que possible. En effet la classe ne gère pas en natif le passage d'un timestamp à la construction et parse donc la chaîne donnée ce qui donne des temps de construction très lent (le double d'un appel avec une chaîne classique).&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.thebuble.org/post/2008/12/23/Classe-DateTime-de-PHP5#comment-form</comments>
      <wfw:comment>http://blog.thebuble.org/post/2008/12/23/Classe-DateTime-de-PHP5#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.thebuble.org/feed/atom/comments/34</wfw:commentRss>
      </item>
    
  <item>
    <title>Classe php5 pour l'API Fotolia utilisant le Zend Framework</title>
    <link>http://blog.thebuble.org/post/2007/11/09/Classe-php5-pour-lAPI-Fotolia-utilisant-le-Zend-Framework</link>
    <guid isPermaLink="false">urn:md5:7ecc4f3b5c331077c4881273533926cf</guid>
    <pubDate>Fri, 09 Nov 2007 04:50:00 +0100</pubDate>
    <dc:creator>Olivier</dc:creator>
        <category>développement</category>
        <category>fotolia</category><category>php</category><category>xml-rpc</category><category>zend framework</category>    
    <description>&lt;p&gt;Dans la lignée de mon post précédent, voici le code d'une classe implémentant de façon simple l'API XML-RPC de &lt;a href=&quot;http://www.fotolia.com/&quot;&gt;Fotolia&lt;/a&gt; avec le &lt;a href=&quot;http://framework.zend.com/&quot;&gt;Zend Framework&lt;/a&gt;.
&lt;br /&gt;&lt;br /&gt;Je précise à tout hasard que ce code est livré tel quel et que
je ne suis pas responsable de tout problème pouvant survenir de son
utilisation.
&lt;br /&gt;La licence du code est la &lt;a href=&quot;http://fr.wikipedia.org/wiki/Licence_BSD&quot;&gt;licence BSD&lt;/a&gt;.
&lt;br /&gt;Pour ceux que ça intéresse, cette classe fait l'objet d'une proposition pour intégrer le framework. &lt;br /&gt;Vous pouvez suivre son évolution ici : &lt;a href=&quot;http://framework.zend.com/wiki/display/ZFPROP/Zend_Service_Fotolia&quot;&gt;http://framework.zend.com/wiki/display/ZFPROP/Zend_Service_Fotolia&lt;/a&gt;
&lt;/p&gt;    &amp;lt;?php&lt;br /&gt;&lt;pre&gt;require_once 'Zend/Service/Exception.php';&lt;br /&gt;require_once 'Zend/Http/Client.php';&lt;br /&gt;require_once 'Zend/XmlRpc/Client.php';&lt;br /&gt;&lt;br /&gt;class Zend_Service_Fotolia_Exception extends Zend_Service_Exception&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class Zend_Service_Fotolia&lt;br /&gt;{&lt;br /&gt;    /**&lt;br /&gt;     * Fotolia xml-rpc uri&lt;br /&gt;     */&lt;br /&gt;    const FOTOLIA_URI = 'http://www.fotolia.com/Xmlrpc/rpc';&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * API key&lt;br /&gt;     *&lt;br /&gt;     * @var $_key string&lt;br /&gt;     */&lt;br /&gt;    private $_key;&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * XML-RPC client&lt;br /&gt;     *&lt;br /&gt;     * @var $_client Zend_XmlRpc_Client&lt;br /&gt;     */&lt;br /&gt;    private $_client;&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Proxy instances array&lt;br /&gt;     *&lt;br /&gt;     * @var $_proxies array&lt;br /&gt;     */&lt;br /&gt;    private $_proxies;&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Current session id&lt;br /&gt;     *&lt;br /&gt;     * @var $_session_id string&lt;br /&gt;     */&lt;br /&gt;    private $_session_id;&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Constructor&lt;br /&gt;     *&lt;br /&gt;     * @param  string $apiKey&lt;br /&gt;     */&lt;br /&gt;    public function __construct($apiKey)&lt;br /&gt;    {&lt;br /&gt;        $this-&amp;gt;_key = $apiKey;&lt;br /&gt;        $this-&amp;gt;_session_id = NULL;&lt;br /&gt;        $http = new Zend_Http_Client();&lt;br /&gt;        $http-&amp;gt;setCookieJar();&lt;br /&gt;        $this-&amp;gt;_client = new Zend_XmlRpc_Client(self::FOTOLIA_URI, $http);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Returns current api key&lt;br /&gt;     *&lt;br /&gt;     * return string&lt;br /&gt;     */&lt;br /&gt;    public function getApiKey()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;_key;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method makes possible to search media in fotolia image bank.&lt;br /&gt;     * Full search capabilities are available through the API&lt;br /&gt;     *&lt;br /&gt;     * @param  array  $searchParams&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getSearchResults($searchParams)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getSearchResults',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $searchParams));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns childs of a parent category in fotolia representative category system.&lt;br /&gt;     * This method could be used to display a part of the category system or the all tree.&lt;br /&gt;     * Fotolia categories system counts three levels.&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $language_id&lt;br /&gt;     * @param  int    $id&lt;br /&gt;     * @param  int    $category_type_id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getCategories1($language_id = 2, $id = 0, $category_type_id = 1)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getCategories1',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $language_id,&lt;br /&gt;                                   $id,&lt;br /&gt;                                   $category_type_id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns childs of a parent category in fotolia conceptual category system.&lt;br /&gt;     * This method could be used to display a part of the category system or the all tree.&lt;br /&gt;     * Fotolia categories system counts three levels.&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $language_id&lt;br /&gt;     * @param  int    $id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getCategories2($language_id = 2, $id = 0)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getCategories2',&lt;br /&gt;                             array($this-&amp;gt;_key, $language_id, $id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns most searched tag and most used tag on fotolia website.&lt;br /&gt;     * This method may help you to create a tags cloud.&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $language_id&lt;br /&gt;     * @param  string $type&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getTags($language_id = 2, $type = 'Used')&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;_call('getTags',&lt;br /&gt;                            array($this-&amp;gt;_key, $language_id, $type));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns public galleries for a defined language&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $language_id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getGalleries($language_id = 2)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getGalleries',&lt;br /&gt;                             array($this-&amp;gt;_key, $language_id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns childs of a parent colors in the Fotolia color scheme.&lt;br /&gt;     * If no parent is provided first level colors are returned.&lt;br /&gt;     * This method can be used to display color and subcolors for color search queries.&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getColors($id = 0)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getColors', array($this-&amp;gt;_key, $id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns Fotolia list of countries.&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $language_id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getCountries($language_id = 2)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getCountries',&lt;br /&gt;                             array($this-&amp;gt;_key, $language_id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns fotolia data&lt;br /&gt;     *&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getData()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getData', array($this-&amp;gt;_key));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method is a test method which returns success if connexion is valid&lt;br /&gt;     *&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function test()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('test', array($this-&amp;gt;_key));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method return all information about a media&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $id&lt;br /&gt;     * @param  int    $thumbnail_size&lt;br /&gt;     * @param  int    $language_id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getMediaData($id, $thumbnail_size = 110, $language_id = 2)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getMediaData',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $id,&lt;br /&gt;                                   $thumbnail_size,&lt;br /&gt;                                   $language_id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method return private galleries for logged user&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $id&lt;br /&gt;     * @param  int    $language_id&lt;br /&gt;     * @param  int    $thumbnail_size&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getMediaGalleries($id, $language_id = 2, $thumbnail_size = 110)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getMediaData',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $id,&lt;br /&gt;                                   $language_id,&lt;br /&gt;                                   $thumbnail_size));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method allows to purchase a media and returns url to the purchased file&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $id&lt;br /&gt;     * @param  string $license_name&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getMedia($id, $license_name)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getMedia',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId(),&lt;br /&gt;                                   $id,&lt;br /&gt;                                   $license_name));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns comp images. Comp images can ONLY be used to evaluate the image&lt;br /&gt;     * as to suitability for a project, obtain client or internal company approvals,&lt;br /&gt;     * or experiment with layout alternatives.&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getMediaComp($id)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getMediaComp',&lt;br /&gt;                             array($this-&amp;gt;_key, $id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Authenticate an user&lt;br /&gt;     *&lt;br /&gt;     * @param  string $login User login&lt;br /&gt;     * @param  string $pass User password&lt;br /&gt;     */&lt;br /&gt;    public function loginUser($login, $pass)&lt;br /&gt;    {&lt;br /&gt;        $res = $this-&amp;gt;__call('loginUser',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $login,&lt;br /&gt;                                   $pass));&lt;br /&gt;        $this-&amp;gt;_session_id = $res['session_id'];&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Log out an user&lt;br /&gt;     */&lt;br /&gt;    public function logoutUser()&lt;br /&gt;    {&lt;br /&gt;        $this-&amp;gt;__call('logoutUser',&lt;br /&gt;                      array($this-&amp;gt;key,&lt;br /&gt;                            $this-&amp;gt;_getSessionId()));&lt;br /&gt;        $this-&amp;gt;_session_id = NULL;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns data for logged user.&lt;br /&gt;     *&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getUserData()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getUserData',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId()));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method allows you to get sales/views/income statistics from your account.&lt;br /&gt;     *&lt;br /&gt;     * @param  string $type&lt;br /&gt;     * @param  string $time_range&lt;br /&gt;     * @param  string $easy_date_period&lt;br /&gt;     * @param  string $start_date&lt;br /&gt;     * @param  string $end_date&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getUserAdvancedStats($type,&lt;br /&gt;                                         $time_range,&lt;br /&gt;                                         $easy_date_period=NULL,&lt;br /&gt;                                         $start_date=NULL,&lt;br /&gt;                                         $end_date=NULL)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getUserAdvancedStats',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId(),&lt;br /&gt;                                   $type,&lt;br /&gt;                                   $time_range,&lt;br /&gt;                                   $easy_date_period,&lt;br /&gt;                                   $start_date,&lt;br /&gt;                                   $end_date));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This methods returns statistics for logged user&lt;br /&gt;     *&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getUserStats()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getUserStats',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId()));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Delete a user's gallery&lt;br /&gt;     *&lt;br /&gt;     * @param  string $id&lt;br /&gt;     */&lt;br /&gt;    public function deleteUserGallery($id)&lt;br /&gt;    {&lt;br /&gt;        $this-&amp;gt;__call('deleteUserGallery',&lt;br /&gt;                      array($this-&amp;gt;_key,&lt;br /&gt;                            $this-&amp;gt;_getSessionId(),&lt;br /&gt;                            $id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method allows you to create a new gallery in your account.&lt;br /&gt;     *&lt;br /&gt;     * @param  string $name&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function createUserGallery($name)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('createUserGallery',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId(),&lt;br /&gt;                                   $name));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method allows you to add a content to your default lightbox or any of your existing galleries&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $content_id&lt;br /&gt;     * @param  string $id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function addToUserGallery($content_id, $id = '')&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('addToUserGallery',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId(),&lt;br /&gt;                                   $content_id,&lt;br /&gt;                                   $id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method allows you to remove a content from your default lightbox or any of your existing galleries&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $content_id&lt;br /&gt;     * @param  string $id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function removeFromUserGallery($content_id, $id = '')&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('removeFromUserGallery',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId(),&lt;br /&gt;                                   $content_id,&lt;br /&gt;                                   $id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method allows to search media in logged user galleries or lightbox.&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $page&lt;br /&gt;     * @param  int    $per_page&lt;br /&gt;     * @param  int    $thumbnail_size&lt;br /&gt;     * @param  string $id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getUserGalleryMedias($page = 0,&lt;br /&gt;                                         $per_page = 32,&lt;br /&gt;                                         $thumbnail_size = 110,&lt;br /&gt;                                         $id = '')&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getUserGalleryMedias',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId(),&lt;br /&gt;                                   $page,&lt;br /&gt;                                   $per_page,&lt;br /&gt;                                   $thumbnail_size,&lt;br /&gt;                                   $id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns private galleries for logged user.&lt;br /&gt;     *&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getUserGalleries()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getUserGalleries',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId()));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Magic method used to call fotolia xml-rpc functions&lt;br /&gt;     *&lt;br /&gt;     * @param  string $method&lt;br /&gt;     * @param  array  $args&lt;br /&gt;     * @return array&lt;br /&gt;     * @throws Zend_Service_Fotolia_Exception&lt;br /&gt;     */&lt;br /&gt;    public function __call($method, $args)&lt;br /&gt;    {&lt;br /&gt;        $obj = $this-&amp;gt;_getProxy($this-&amp;gt;_getNamespace($method));&lt;br /&gt;        try {&lt;br /&gt;            return $obj-&amp;gt;__call($method, $args);&lt;br /&gt;        } catch (Zend_XmlRpc_Client_Exception $e) {&lt;br /&gt;            throw new Zend_Service_Fotolia_Exception($e-&amp;gt;getMessage(),&lt;br /&gt;                                                     $e-&amp;gt;getCode());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Returns xml-rpc client&lt;br /&gt;     *&lt;br /&gt;     * @return Zend_XmlRpc_Client&lt;br /&gt;     */&lt;br /&gt;    public function getClient()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;_client;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Returns namespace associated to given method name&lt;br /&gt;     *&lt;br /&gt;     * @param  string $method&lt;br /&gt;     * @return string&lt;br /&gt;     */&lt;br /&gt;    protected function _getNamespace($method)&lt;br /&gt;    {&lt;br /&gt;        switch ($method) {&lt;br /&gt;        case 'getSearchResults':&lt;br /&gt;        case 'getCategories1':&lt;br /&gt;        case 'getCategories2':&lt;br /&gt;        case 'getTags':&lt;br /&gt;        case 'getGalleries':&lt;br /&gt;        case 'getColors':&lt;br /&gt;        case 'getCountries':&lt;br /&gt;            return 'search';&lt;br /&gt;        case 'getMediaData':&lt;br /&gt;        case 'getMediaGalleries':&lt;br /&gt;        case 'getMedia':&lt;br /&gt;        case 'getMediaComp':&lt;br /&gt;            return 'media';&lt;br /&gt;        case 'loginUSer':&lt;br /&gt;        case 'logoutUser':&lt;br /&gt;        case 'getUserData':&lt;br /&gt;        case 'getUserGalleries':&lt;br /&gt;        case 'getUserGalleryMedias':&lt;br /&gt;        case 'deleteUserGallery':&lt;br /&gt;        case 'createUserGallery':&lt;br /&gt;        case 'addToUserGallery':&lt;br /&gt;        case 'removeFromUserGallery':&lt;br /&gt;        case 'getUSerAdvancedStats':&lt;br /&gt;            return 'user';&lt;br /&gt;        case 'getData':&lt;br /&gt;        case 'test':&lt;br /&gt;            return 'main';&lt;br /&gt;        default:&lt;br /&gt;            return 'xmlrpc';&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Returns a xml-rpc proxy instance from a namespace&lt;br /&gt;     *&lt;br /&gt;     * @param  string $namespace&lt;br /&gt;     * @return Zend_xmlRpc_Client_ServerProxy&lt;br /&gt;     * @throws Zend_Service_Fotolia_Exception&lt;br /&gt;     */&lt;br /&gt;    protected function _getProxy($namespace)&lt;br /&gt;    {&lt;br /&gt;        if (!isset($this-&amp;gt;_proxies[$namespace])) {&lt;br /&gt;            $valid = array('xmlrpc', 'search', 'media', 'user', 'main');&lt;br /&gt;            if (!in_array($namespace, $valid)) {&lt;br /&gt;                throw new Zend_Service_Fotolia_Exception('invalid namespace');&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            $this-&amp;gt;_proxies[$namespace] = $this-&amp;gt;_client-&amp;gt;getProxy($namespace);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        return $this-&amp;gt;_proxies[$namespace];&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Returns current session id&lt;br /&gt;     *&lt;br /&gt;     * @return string&lt;br /&gt;     * @throws Zend_Service_Fotolia_Exception&lt;br /&gt;     */&lt;br /&gt;    protected function _getSessionId()&lt;br /&gt;    {&lt;br /&gt;        if ($this-&amp;gt;_session_id === NULL) {&lt;br /&gt;            throw new Zend_Service_Fotolia_Exception('session id not set, please use loginUser method before');&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        return $this-&amp;gt;_session_id;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;</description>
    
    
    
          <comments>http://blog.thebuble.org/post/2007/11/09/Classe-php5-pour-lAPI-Fotolia-utilisant-le-Zend-Framework#comment-form</comments>
      <wfw:comment>http://blog.thebuble.org/post/2007/11/09/Classe-php5-pour-lAPI-Fotolia-utilisant-le-Zend-Framework#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.thebuble.org/feed/atom/comments/13</wfw:commentRss>
      </item>
    
  <item>
    <title>Zend Framework</title>
    <link>http://blog.thebuble.org/post/2006/08/15/Zend-Framework</link>
    <guid isPermaLink="false">urn:md5:08cde61ad90443f27b57664d7cc06ad6</guid>
    <pubDate>Tue, 15 Aug 2006 16:03:00 +0200</pubDate>
    <dc:creator>Olivier</dc:creator>
        <category>développement</category>
        <category>php</category><category>zend framework</category>    
    <description>    J'ai longtemps cherché un framework intéressant à utiliser en php.
&lt;br /&gt;&lt;br /&gt;Tous les framework que j'avais pu trouvé ne me plaisaient pas : ils étaient ou trop lourd ou trop simple et dans les deux cas compliqués à mettre en oeuvre dans un projet industriel.
&lt;br /&gt;&lt;br /&gt;Mais voilà que Zend a répondu à mon &lt;a href=&quot;http://framework.zend.com&quot;&gt;besoin&lt;/a&gt; !&lt;br /&gt;Ce framework est conçu sur le modèle &lt;a href=&quot;http://en.wikipedia.org/wiki/Model-view-controller&quot;&gt;MVC&lt;/a&gt; et est très modulaire.&lt;br /&gt;Le fait qu'il soit supporté par Zend lui donne un côté pérenne qui n'est pas fait pour me déplaire !</description>
    
    
    
          <comments>http://blog.thebuble.org/post/2006/08/15/Zend-Framework#comment-form</comments>
      <wfw:comment>http://blog.thebuble.org/post/2006/08/15/Zend-Framework#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.thebuble.org/feed/atom/comments/5</wfw:commentRss>
      </item>
    
</channel>
</rss>