<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Oh my blog ! &#187; PHP</title>
	<atom:link href="https://blog.developpez.com/siddh/pcategory/php/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/siddh</link>
	<description></description>
	<lastBuildDate>Tue, 04 Jul 2006 15:58:50 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Comment optimiser la complétion objet dans PHP IDE</title>
		<link>https://blog.developpez.com/siddh/p2181/php/comment_optimiser_la_completion_objet_da</link>
		<comments>https://blog.developpez.com/siddh/p2181/php/comment_optimiser_la_completion_objet_da#comments</comments>
		<pubDate>Fri, 30 Jun 2006 13:33:08 +0000</pubDate>
		<dc:creator><![CDATA[siddh]]></dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Le magnifique PHP IDE de eclipse nous permet d&#8217;avoir une &#171;&#160;vraie&#160;&#187; complétion objet, ce dont on aurait tort de se priver n&#8217;est ce pas ? Elle marche déja bien à la base mais on peut faire en sorte que même les attributs ou les variables en retour de méthodes soient détectés. Du coup on s&#8217;embête moins pour un ligne comme ça : $this->monAttribut->getMachin()->getTruc(); Comment faire ? Il suffit tout simplement de commenter son code pour [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Le magnifique PHP IDE de eclipse nous permet d&rsquo;avoir une &laquo;&nbsp;vraie&nbsp;&raquo; complétion objet, ce dont on aurait tort de se priver n&rsquo;est ce pas ?<br />
Elle marche déja bien à la base mais on peut faire en sorte que même les attributs ou les variables en retour de méthodes soient détectés.<br />
Du coup on s&rsquo;embête moins pour un ligne comme ça : </p>
<blockquote><pre>$this->monAttribut->getMachin()->getTruc();</pre>
</blockquote>
<p>Comment faire ?<br />
Il suffit tout simplement de commenter son code pour prévenir l&rsquo;environnement <img src="https://blog.developpez.com/siddh/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /><br />
Les &laquo;&nbsp;javaistes&nbsp;&raquo; reconnaîtront bien sûr la syntaxe javadoc dont phpdoc s&rsquo;est inspirée.</p>
<p>Pour les attributs : </p>
<blockquote><pre>
  /**
  * @var Client
  */
  private $client;</pre>
</blockquote>
<p>Pour les méthodes : </p>
<blockquote><pre>
  /**
  * Ce texte n'est pas obligatoire pour la complétion mais
  * tant qu'on en est à commenter, autant aller jusqu'au bout !
  * @param Produit
  * @param int
  * @return LigneCommande
  * @throws Exception
  */
  public function creerLigne($produit,$qte){
     if($produit-&gt;getStock() &gt;= $qte)
        return new LigneCommande($produit,$qte);
     else
        throw new Exception("Quantité insuffisante en stock");
  }</pre>
</blockquote>
<p>Bien entendu, si la méthode n&rsquo;a pas de return, on ne met pas le @return, idem pour les arguments.</p>
<p>Grace à cela, non seulement on a un code documenté mais en plus la complétion se fera comme il faut.</p>
<p>Bon code à tous.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Zend IDE pour eclipse version 0.0.9</title>
		<link>https://blog.developpez.com/siddh/p1935/php/zend_ide_pour_eclipse_version_0_0_9</link>
		<comments>https://blog.developpez.com/siddh/p1935/php/zend_ide_pour_eclipse_version_0_0_9#comments</comments>
		<pubDate>Wed, 03 May 2006 20:26:48 +0000</pubDate>
		<dc:creator><![CDATA[siddh]]></dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Le Zend IDE tant attendu (enfin par moi au moins) est arrivé dans sa toute première version. C&#8217;est certes une version 0.0.9 mais quand on voit ce qu&#8217;il fait par rapport a phpeclipse (surtout la complétion objet). Pour le télécharger, c&#8217;est par là Vous devrez impérativement avoir les webtools d&#8217;installés car Zend Ide s&#8217;appuie dessus. Mais je ne voit pas qui serait contre de la complétion javascript et css de toute manière. Le lien pour [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Le Zend IDE tant attendu (enfin par moi au moins) est arrivé dans sa toute première version.<br />
C&rsquo;est certes une version 0.0.9 mais quand on voit ce qu&rsquo;il fait par rapport a phpeclipse (surtout la complétion objet).</p>
<p>Pour le télécharger, c&rsquo;est <a href="http://www.zend.com/phpide">par là</a></p>
<p><span id="more-3"></span></p>
<p>Vous devrez impérativement avoir les webtools d&rsquo;installés car Zend Ide s&rsquo;appuie dessus.<br />
Mais je ne voit pas qui serait contre de la complétion javascript et css de toute manière.<br />
Le lien pour les webtools est donné sur la page de téléchargement du Zend Ide.</p>
<p>Si vous avez phpeclipse, il faudra le desactiver :</p>
<ul>
<li>Help > Software Update > Manage Configuration</li>
<li>Bouton droit sur phpeclipse et Disable</li>
</ul>
<p>Pour récupérer vos projets phpeclipse sous le Zend Ide, il faut éditer le fichier <em>.project</em> se trouvant à la racine de votre projet et remplacer :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;buildSpec&gt; <br />
&nbsp; &lt;buildCommand&gt; <br />
&nbsp; &nbsp; &lt;name&gt;net.sourceforge.phpeclipse.parserbuilder&lt;/name&gt; <br />
&nbsp; &nbsp; &lt;arguments&gt; <br />
&nbsp; &nbsp; &lt;/arguments&gt; <br />
&nbsp; &lt;/buildCommand&gt; <br />
&lt;/buildSpec&gt; <br />
&lt;natures&gt; <br />
&nbsp; &lt;nature&gt;net.sourceforge.phpeclipse.phpnature&lt;/nature&gt; <br />
&lt;/natures&gt;</div></div>
<p>par :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;buildSpec&gt; <br />
&nbsp; &lt;buildCommand&gt; <br />
&nbsp; &nbsp; &lt;name&gt;org.eclipse.php.core.PhpIncrementalProjectBuilder&lt;/name&gt; <br />
&nbsp; &nbsp; &lt;arguments&gt; <br />
&nbsp; &nbsp; &lt;/arguments&gt; <br />
&nbsp; &lt;/buildCommand&gt; <br />
&nbsp; &lt;buildCommand&gt; <br />
&nbsp; &nbsp; &lt;name&gt;org.eclipse.wst.validation.validationbuilder&lt;/name&gt; <br />
&nbsp; &nbsp; &lt;arguments&gt; <br />
&nbsp; &nbsp; &lt;/arguments&gt; <br />
&nbsp; &lt;/buildCommand&gt; <br />
&lt;/buildSpec&gt; <br />
&lt;natures&gt; <br />
&nbsp; &lt;nature&gt;org.eclipse.php.core.PHPNature&lt;/nature&gt; <br />
&lt;/natures&gt;</div></div>
<p>et il faudra ajouter, toujours à la racine du projet, un fichier <em>.projectOptions</em> contenant :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; <br />
&lt;phpProjectOptions&gt; <br />
&nbsp; &lt;projectOption name=&quot;org.eclipse.php.core.contextRoot&quot;&gt; <br />
&nbsp; &lt;/projectOption&gt; <br />
&nbsp; &lt;projectOption name=&quot;org.eclipse.php.core.defaultEncoding&quot;&gt; <br />
&nbsp; &lt;/projectOption&gt; <br />
&nbsp; &lt;includepath&gt; <br />
&nbsp; &lt;/includepath&gt; <br />
&lt;/phpProjectOptions&gt;</div></div>
<p>Cela vous évitera d&rsquo;avoir à recréer vos projets <img src="https://blog.developpez.com/siddh/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
<p>Le debug ne fonctionne pas encore mais la complétion PHP est vraiment bien faite (comme si était en java).</p>
<p>A vos claviers &#8230;</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Zend Framework Preview 0.1.2</title>
		<link>https://blog.developpez.com/siddh/p1718/php/zend_framework_preview_0_1_2</link>
		<comments>https://blog.developpez.com/siddh/p1718/php/zend_framework_preview_0_1_2#comments</comments>
		<pubDate>Wed, 08 Mar 2006 19:03:39 +0000</pubDate>
		<dc:creator><![CDATA[siddh]]></dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Depuis le temps qu&#8217;on l&#8217;attendais, le voici enfin !! Zend vient de sortir une preview de son framework PHP et si il manquait encore des arguments pour que les entreprises passent à PHP, le voici. Quoi que vous vouliez faire, vous trouverez quelque chose d&#8217;utile dedans. le but avoué de ce framework est simple : &#171;&#160;Fournir de quoi faire une application PHP5 professionnelle complète sans avoir besoin d&#8217;autre chose que ce framework&#160;&#187; (cf. Goals of [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Depuis le temps qu&rsquo;on l&rsquo;attendais, le voici enfin !!<br />
Zend vient de sortir une preview de son framework PHP et si il manquait encore des arguments pour que les entreprises passent à PHP, le voici.</p>
<p>Quoi que vous vouliez faire, vous trouverez quelque chose d&rsquo;utile dedans.<br />
le but avoué de ce framework est simple :<br />
&laquo;&nbsp;Fournir de quoi faire une application PHP5 professionnelle complète sans avoir besoin d&rsquo;autre chose que ce framework&nbsp;&raquo; (cf. <a href="http://framework.zend.com/roadmap/goals/">Goals of the Zend Framework</a>).</p>
<p>Ce qu&rsquo;il y a déjà :</p>
<ul>
<li>Zend_Controller et Zend_View pour faire du MVC</li>
<li>Zend_Db Couche d&rsquo;abstraction utilisant PDO</li>
<li>Zend_HttpClient Client HTTP</li>
<li>Zend_Json Pour communiquer plus facilement avec JSON</li>
<li>Zend_Mail et Zend_Mime Pour faire des jolis mails</li>
<li>Zend_Pdf qui ne necessite aucune librairie externe</li>
<li>&#8230;</li>
</ul>
<p>Vous trouverez toute la liste sur la page de <a href="http://framework.zend.com/download">téléchargement</a>.</p>
<p>Et quand on regarde la <a href="http://framework.zend.com/roadmap/future">roadmap</a> &#8230;</p>
<p>A noter que le site est bien entendu conçu avec le framework (regardez bien les urls).<br />
Et si vous vous voulez un tutoriel il y en a déjà un pour <a href="http://www.phparch.com/zftut/">la partie MVC</a>.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Des balises personnalisées avec Smarty</title>
		<link>https://blog.developpez.com/siddh/p1435/php/des_balises_personnalisees_avec_smarty</link>
		<comments>https://blog.developpez.com/siddh/p1435/php/des_balises_personnalisees_avec_smarty#comments</comments>
		<pubDate>Fri, 16 Dec 2005 09:04:19 +0000</pubDate>
		<dc:creator><![CDATA[siddh]]></dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Smarty est un moteur de template pour php. L&#8217;utilité première d&#8217;un tel outil est de vous permettre de séparer votre code applicatif de la présentation. Vous le trouverez ici. Cet article n&#8217;est pas une introduction à l&#8217;utilisation de smarty mais plutot un guide pour des personnes l&#8217;utilisant déja et voulant étendre ses possibilités. En effet, cet outil offre la possibilité de créer ses propres &#171;&#160;balises&#160;&#187; de template. Nous verrons comment ajouter simplement un select html [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Smarty est un moteur de template pour php.<br />
L&rsquo;utilité première d&rsquo;un tel outil est de vous permettre de séparer votre code applicatif de la présentation.<br />
Vous le trouverez <a href="http://smarty.php.net/" target="_blank">ici</a>.</p>
<p>Cet article n&rsquo;est pas une introduction à l&rsquo;utilisation de smarty mais plutot un guide pour des personnes l&rsquo;utilisant déja et voulant étendre ses possibilités.<br />
En effet, cet outil offre la possibilité de créer ses propres &laquo;&nbsp;balises&nbsp;&raquo; de template.</p>
<p>Nous verrons comment ajouter simplement un select html remplit avec le contenu d&rsquo;une table de notre base de donnée avec une balise de cette forme :</p>
<blockquote><p>{monselect table=&nbsp;&raquo;user&nbsp;&raquo; value=&nbsp;&raquo;iduser&nbsp;&raquo; text=&nbsp;&raquo;name&nbsp;&raquo;}</p></blockquote>
<p><span id="more-1"></span><br />
Pour que smarty puisse remplacer notre balise par ce que l&rsquo;on veut, il nous suffit de lui ajouter une fonction a l&rsquo;aide de sa méthode <strong>register_function</strong>.</p>
<p>Imaginons la fonction suivante :</p>
<blockquote><pre>
function mafonction($params){
    $buffer = "";
    if(array_key_exists("table",$params)){
         $table = $params["table"];
         $value = $params["value"];
         $text = $params["text"];
         $buffer = "&lt;select name='".$table."'&gt;";
         mysql_connect(.....);
         mysql_select_db(....);
         $res = mysql_query("SELECT ".$value.",".$text." FROM ".$table);
         while($row = mysql_fetch_assoc($res)){
             $buffer .= "&lt;option value='".$row[$value]."'&gt;".
                        $row[$text]."&lt;/option&gt;";
         }
         $buffer .= "&lt;/select&gt;";
    }else{
         $buffer = "erreur machin ....";
   }
   return $buffer;
}</pre>
</blockquote>
<p>Vous l&rsquo;aurez donc compris, cette fonction doit retourner une chaine qui viendra remplacer votre balise.<br />
Notre fonction recevra un paramètre qui sera un tableau associatif contenant les différents attributs de notre balise.</p>
<p>Il ne reste plus qu&rsquo;a l&rsquo;ajouter a smarty :</p>
<blockquote><p>$smarty->register_function(&lsquo;monselect&rsquo;,&rsquo;mafonction&rsquo;);</p></blockquote>
<p>$smarty étant bien entendu notre objet smarty.</p>
<p>On peut aussi mettre cette fonction dans une classe, a ce moment la, le register_function change un peu :</p>
<blockquote><p>$smarty->register_function(&lsquo;monselect&rsquo;,array($objetInstancie,&rsquo;mafonction&rsquo;));</p></blockquote>
<p>Les utilisateurs de php 4 penseront bien entendu a mettre un &amp;$objetInstancie pour passer une référence.</p>
<p>Encore une autre possibilité : passer juste le nom de la classe, mais a ce moment là, la méthode devra etre statique.</p>
<blockquote><p>$smarty->register_function(&lsquo;monselect&rsquo;,array(&lsquo;nomDeLaClasse&rsquo;,&rsquo;mafonction&rsquo;));</p></blockquote>
<p>Faisons un peu de php 5 !</p>
<p>Il existe une api de reflexion en php 5, c&rsquo;est à dire que vous pouvez &laquo;&nbsp;explorer&nbsp;&raquo; un objet.<br />
Nous allons nous en servir pour ajouter automatiquement a smarty toutes les méthodes d&rsquo;une classe qui serait dédiée à contenir nos fonctions smarty.</p>
<blockquote><pre>
class FonctionsSmarty{
   public static function mafonction($params){
    $buffer = "";
    if(array_key_exists("table",$params)){
         $table = $params["table"];
         $value = $params["value"];
         $text = $params["text"];
         $buffer = "&lt;select name='".$table."'&gt;";
         mysql_connect(.....);
         mysql_select_db(....);
         $res = mysql_query("SELECT ".$value.",".$text." FROM ".$table);
         while($row = mysql_fetch_assoc($res)){
             $buffer .= "&lt;option value='".$row[$value]."'&gt;".
                         $row[$text]."&lt;/option&gt;";
         }
         $buffer .= "&lt;/select&gt;";
    }else{
         $buffer = "erreur machin ....";
   }
   return $buffer;
 }

}
</pre>
</blockquote>
<p>Il ne nous reste plus qu&rsquo;à parcourir notre classe pour ajouter toutes ses fonctions a smarty :</p>
<blockquote><pre>
$class= new ReflectionClass('FonctionsSmarty');
$methods = $class->getMethods();
foreach($methods as $method){
   $smarty->register_function($method->getName(),
         array('FonctionsSmarty', $method->getName()));
}
</pre>
</blockquote>
<p>Et le tour est joué <img src="https://blog.developpez.com/siddh/wp-includes/images/smilies/icon_biggrin.gif" alt=":D" class="wp-smiley" /><br />
En faisant comme ca, votre balise devra s&rsquo;appeler comme votre fonction par contre.</p>
<p>Il ne vous reste plus qu&rsquo;à rajouter des attributs supplémentaires a votre balise pour gérer une clause where ou orderby &#8230;.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
