<?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>Tharkun homelands &#187; PHP</title>
	<atom:link href="http://www.dev-tharkun.com/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dev-tharkun.com</link>
	<description>Blog de réflexions, d&#039;actualité, de tutoriels</description>
	<lastBuildDate>Thu, 18 Aug 2011 17:21:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>PHP 5.3.7 est disponible</title>
		<link>http://www.dev-tharkun.com/php-5-3-7-est-disponible/</link>
		<comments>http://www.dev-tharkun.com/php-5-3-7-est-disponible/#comments</comments>
		<pubDate>Thu, 18 Aug 2011 17:20:47 +0000</pubDate>
		<dc:creator>Tharkun</dc:creator>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.dev-tharkun.com/?p=1334</guid>
		<description><![CDATA[Ilia Alshanetsky a annoncé aujourd&#8217;hui la sortie de la dernière release mineur de PHP, numérotée 5.3.7. Cette version mineure est la première à avoir suivi la RFC sur le processus de gestion des releases de PHP. Je parlais dans un &#8230;<p class="read-more"><a href="http://www.dev-tharkun.com/php-5-3-7-est-disponible/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Ilia Alshanetsky a annoncé aujourd&#8217;hui <a href="http://www.php.net/index.php#id2011-08-18-1">la sortie de la dernière release mineur de PHP</a>, numérotée <strong>5.3.7</strong>. Cette version mineure est la première à avoir suivi <a href="https://wiki.php.net/rfc/releaseprocess"><strong>la RFC sur le processus de gestion des releases de PHP</strong></a>. Je parlais dans un article précédent de la volonté de <strong>professionnalisation</strong> des développeurs de PHP. Cette réussite marque donc la fin d&#8217;une gestion quelque peu chaotique, tout du moins trop peu organisée.</p>
<p>Les extensions SQLite et PCRE ont été mises à jour respectivement aux versions 3.7.7.1 et 8.12. PHP 5.3.7 corrige également plus de 90 bugs dont <strong>une demi douzaine concernait des problèmes de sécurité</strong>.</p>
<p>L&#8217;annonce officielle a également marqué <strong>la fin du support de PHP 5.2</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dev-tharkun.com/php-5-3-7-est-disponible/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP 5.4 alpha 2 est disponible</title>
		<link>http://www.dev-tharkun.com/php-5-4-alpha-2-disponible/</link>
		<comments>http://www.dev-tharkun.com/php-5-4-alpha-2-disponible/#comments</comments>
		<pubDate>Fri, 15 Jul 2011 14:19:41 +0000</pubDate>
		<dc:creator>Tharkun</dc:creator>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.dev-tharkun.com/?p=1315</guid>
		<description><![CDATA[PHP fait partie des principaux langages de programmation utilisé dans le monde, il reste très populaire. Créé en 1994 par Rasmus Lerdorf (aussi appelé Dieu dans le milieu), PHP a énormément évolué, près de 31 version mineures pour 5 versions &#8230;<p class="read-more"><a href="http://www.dev-tharkun.com/php-5-4-alpha-2-disponible/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>PHP fait partie des principaux langages de programmation utilisé dans le monde, il reste très populaire. Créé en 1994 par <a href="http://fr.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus Lerdorf</a> (aussi appelé Dieu dans le milieu), PHP a énormément évolué, près de 31 version mineures pour 5 versions majeures dont la dernière, la 5.0.0, est sortie est en 2004. L&#8217;année 2004 peut sembler lointaine pour la dernière sortie d&#8217;une version majeure. En réalité les versions mineures 5.1.0, 5.2.0 et 5.3.0 ont amené de très nombreuses modifications même si elles n&#8217;ont pas été baptisées &laquo;&nbsp;version majeure&nbsp;&raquo;. Pour plus d&#8217;informations, vous pouvez consulter l&#8217;historique <a href="http://fr.wikipedia.org/wiki/PHP">au lien suivant</a>.</p>
<p>Contrairement à ses principaux concurrents (.Net ou Java), <strong>ce langage n&#8217;est pas géré par une entreprise</strong>. Ce sont des développeurs (appelés contributeurs) qui bénévolement créent, maintiennent et font évoluer ce langage. De profonds désaccords au sein de la communauté ont eu raison de la version 6 de PHP qui était annoncée comme le messie. Le projet a été abandonné depuis plus d&#8217;un an déjà. Pour autant tout n&#8217;a pas été perdu. En effet la plupart des avancées programmées dans cette version 6 ont été récupérées et intégrées dans les versions mineures de PHP 5.3. Cet échec, on peut le nommer ainsi, a montré les limites de l&#8217;évolution de PHP.</p>
<p>Pour pallier à tous ces problèmes structurels, la communauté s&#8217;est accordé sur des méthodes, des outils. Clarté et transparence sont désormais de mise. Toute évolution doit passer par une <a href="https://wiki.php.net/rfc">RFC</a>. Les contributeurs ont d&#8217;ailleurs réussi à se mettre d&#8217;accord sur les deux RFC suivantes :</p>
<ul>
<li><a href="https://wiki.php.net/rfc/releaseprocess"><strong>Un processus de release</strong></a>. Cette RFC permet de donner des jalons à la création des nouvelles versions, ce qui n&#8217;existait pas auparavant. Celle-ci met aussi un terme à la sacrosainte compatibilité qui existait jusque là. La compatibilité va enfin pouvoir être cassée quand cela s&#8217;avèrera nécessaire.</li>
<li><a href="https://wiki.php.net/rfc/voting"><strong>Un processus de vote</strong></a>. Le but de cette RFC est de définir une méthode de vote. Par le passé, il était parfois difficile de connaître les dates de début ou de fin de vote.</li>
</ul>
<p>Pour ceux que cela intéresse, vous pouvez obtenir plus d&#8217;explications <a href="http://blog.mageekbox.net/?post/2011/07/10/La-r%C3%A9volution-est-en-marche-!">au lien suivant</a>. L&#8217;article détail les choix à faire concernant des fonctionnalités potentielles.</p>
<p>PHP est souvent considéré comme non professionnel, les stéréotypes sont difficiles à perdre. D&#8217;ailleurs la plupart des personnes ayant ces arguments connaissent PHP avec une si ce n&#8217;est deux versions de retard. Les contributeurs esssaient au fur et à mesure des nouvelles versions de mettre en place ce qui est reproché à PHP. On ne peut donc qu&#8217;apprécier la volonté de supprimer certains &laquo;&nbsp;boulets historiques&nbsp;&raquo; du langage (ex: les magic quotes).<br />
Le typage des variables revient souvent comme argument. Ainsi la prochaine version devrait transformer les types primitifs (int, bool&#8230;) en mots réservés, ce qui permettra d&#8217;imposer le type des arguments passés dans des fonctions.</p>
<p>En accord avec le calendrier, la version alpha 2 est disponible au téléchargement depuis hier. Espérons que la prochaine version sortira également à la date convenue&#8230; En tout cas, j&#8217;ai pour ma part hâte de pouvoir travailler avec cette version.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dev-tharkun.com/php-5-4-alpha-2-disponible/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 5.3.4 est disponible</title>
		<link>http://www.dev-tharkun.com/php-5-3-4-disponible/</link>
		<comments>http://www.dev-tharkun.com/php-5-3-4-disponible/#comments</comments>
		<pubDate>Thu, 16 Dec 2010 12:55:53 +0000</pubDate>
		<dc:creator>Tharkun</dc:creator>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.dev-tharkun.com/?p=1153</guid>
		<description><![CDATA[PHP a annoncé il y a quelques jours la sortie de la version 5.3.4. Cette version est une évolution de maintenance de la série 5.3. Il n&#8217;y a donc pas d&#8217;évolution majeure, uniquement des correctifs de bugs. Cela fait un &#8230;<p class="read-more"><a href="http://www.dev-tharkun.com/php-5-3-4-disponible/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>PHP a annoncé il y a quelques jours la sortie de la version 5.3.4. Cette version est une évolution de maintenance de la série 5.3. Il n&#8217;y a donc pas d&#8217;évolution majeure, uniquement des correctifs de bugs.</p>
<p>Cela fait un petit moment que cela a été annoncé, mais je le précise pour les lecteurs de ce blog (qui s&#8217;y intéressent). La version 6 de PHP telle qu&#8217;elle était prévue depuis plusieurs années a été officiellement abandonnée. Les très nombreuses dissensions entre les équipes de développement ont en effet abouti à la mort de PHP 6 dans cette version. Tout n&#8217;est pas perdu puisque certaines évolutions ou corrections de PHP 6 sont de toute façon été intégrées dans les releases mineurs de PHP 5.3. Les désaccords sont principalement axés autour de deux points :</p>
<ul>
<li>la volonté de professionnalisation de PHP d&#8217;une branche de développeurs</li>
<li>la volonté de garder une compatibilité descendante</li>
</ul>
<p>Les débats sont aujourd&#8217;hui repartis sur des bases plus saines.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dev-tharkun.com/php-5-3-4-disponible/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>PHP 5.3.3 est sorti !</title>
		<link>http://www.dev-tharkun.com/php-5-3-3-est-sorti/</link>
		<comments>http://www.dev-tharkun.com/php-5-3-3-est-sorti/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 17:27:58 +0000</pubDate>
		<dc:creator>Tharkun</dc:creator>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.dev-tharkun.com/?p=1106</guid>
		<description><![CDATA[La dernière version stable de PHP est disponible depuis hier. Quatre mois après la sortie de PHP 5.3.2, la version 5.3.3 corrigent près d&#8217;une centaine de bugs, dont certains posaient des problèmes de sécurité. Au-delà des corrections de bugs, cette &#8230;<p class="read-more"><a href="http://www.dev-tharkun.com/php-5-3-3-est-sorti/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>La dernière version stable de PHP est disponible depuis hier. Quatre mois après la sortie de PHP 5.3.2, la version 5.3.3 corrigent près d&#8217;une centaine de bugs, dont certains posaient des problèmes de sécurité.</p>
<p>Au-delà des corrections de bugs, cette nouvelle release entraîne un incompatibilité concernant la déclaration des constructeurs des classes appartenant à un espace de nom. Les &laquo;&nbsp;namespaces&nbsp;&raquo; ou espaces de nom n&#8217;ayant été introduit dans PHP que dernièrement dans le version 5.3, l&#8217;incompatibilité ne pose donc problème que pour les versions 5.3.x.</p>
<p>Depuis l&#8217;apparition de la POO dans PHP, les concepts ont bien évolués, l&#8217;écriture et l&#8217;interprétation du code également. Ainsi en PHP 4, il fallait écrire le code suivant pour utiliser un constructeur.</p>
<pre class="brush: php">
class Bar {
    function Bar() {}
}
</pre>
<p>Le constructeur était une méthode dont le nom était à l&#8217;identique celui de la classe. La version 5 de PHP a introduit le mot clé __construct pour le constructeur comme le montre le code ci-dessous. Pour des raisons de compatibilités, la façon de faire de la version PHP 4 est toujours reconnue, encore aujourd&#8217;hui.</p>
<pre class="brush: php">
class Bar {
    public function __construct() {}
}
</pre>
<p>PHP 5.3.3 entame à mon sens un premier virage afin de supprimer cette compatibilité. En effet les classes appartenant à un espace de noms n&#8217;auront désormais plus accès à cette possibilité. Cela va donc obliger les développeurs à utiliser les bonnes pratiques comme le montre l&#8217;exemple ci-dessous.</p>
<pre class="brush: php">
namespace Foo;
class Bar {
    public function Bar() {
        // treated as constructor in PHP 5.3.0-5.3.2
        // treated as regular method in PHP 5.3.3
    }
}
</pre>
<p>La question est donc : à quand l&#8217;impossibilité d&#8217;utiliser la méthode Bar comme un constructeur ?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dev-tharkun.com/php-5-3-3-est-sorti/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Astuces PHP</title>
		<link>http://www.dev-tharkun.com/astuces-php/</link>
		<comments>http://www.dev-tharkun.com/astuces-php/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 07:19:41 +0000</pubDate>
		<dc:creator>Tharkun</dc:creator>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.dev-tharkun.com/?p=727</guid>
		<description><![CDATA[A heure tardive post orienté informatique. Aujourd&#8217;hui je vais vous présenter quelques astuces (tips en anglais) de langage permettant de gagner de la place, de ne pas rallonger inutilement le code, d&#8217;éviter des erreurs basiques&#8230; La liste n&#8217;est évidemment pas &#8230;<p class="read-more"><a href="http://www.dev-tharkun.com/astuces-php/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>A heure tardive post orienté informatique. Aujourd&#8217;hui je vais vous présenter <strong>quelques astuces</strong> (tips en anglais) de langage permettant de gagner de la place, de ne pas rallonger inutilement le code, d&#8217;éviter des erreurs basiques&#8230; La liste n&#8217;est évidemment pas exhaustive mais cela pourra toujours vous aider de les connaître. Ces astuces ne s&#8217;appliquent d&#8217;ailleurs pas uniquement au PHP.</p>
<h3>Bien utiliser les expressions booléennes</h3>
<p>Que l&#8217;informaticien, développeur&#8230; qui n&#8217;a pas eu un jour à abuser des if/elseif/else lève le doigt. Il est nécessaire d&#8217;optimiser ces codes pour éviter qu&#8217;ils prennent trois kilomètres de long.</p>
<pre class="brush: php">
/*Boolean Expressions optimization*/
if ($a == true) {
    if ($a == true) {
        print &quot;coucou&quot;;
    }
    else if($b == true) {
        print &quot;coucou&quot;;
    }
}
</pre>
<p>Le code ci-dessus devrait être le suivant.</p>
<pre class="brush: php">
/*Boolean Expressions optimization*/
if ($a &amp;&amp; ($b || $c)) {
    print &quot;coucou&quot;;
}
</pre>
<h3>Utiliser for à la place de while</h3>
<pre class="brush: php">
/*Use for instead of while*/
$i = 0;
while($i &lt; 18) {
    /*SOMETHING TODO*/
    $i++;
}
/*Shorter*/
for($i = 0; $i &lt; 18; $i++) {
    /*SOMETHING TODO*/
}
</pre>
<h3>Utiliser la récursivité</h3>
<p>La récursivité n&#8217;est pas toujours bien comprise ni utilisée. Une mauvaise utilisation amène très vite à des programmes qui tournent en boucle dans le vide. Le principe de la récursivité est d&#8217;effectuer le même traitement sur un élément. Ci-dessous se trouve la célèbre suite de Fibonaci</p>
<pre class="brush: php">
/*Write recursively*/
function fibonacci($n) {
    $f1 = 1;
    $f2 = 0;
    $total = 0;
    if( $n == 0 || $n == 1)
        return $n;
    for($i = 2; $i &lt;= $n; $i++) {
        $fib = $f1 + $f2;
        $f2 = $f1;
        $f1 = $fib;
    }
    return $fib;
}
/*Shorter*/
function fibonacci($n) {
    if ($n &lt;= 2) return 1;
    else return fibonacci($n-1) + fibonacci($n-2);
}
</pre>
<h3>L&#8217;opérateur ternaire</h3>
<p>Je parlais plus haut de réduction du nombre de lignes de code lors de l&#8217;utilisation des if. Il est possible de réduire encore plus avec l&#8217;opérateur ternaire. Celui permet d&#8217;écrire un if/else sur un seule et unique ligne.</p>
<pre class="brush: php">
/*Ternary Operator*/
if ($iCompteur &gt; 550)
    $bBool = true;
else
    $bBool = false;
/*Shorter*/
$bBool = $iCompteur &gt; 550 ? true : false;
/*Even shorter*/
$bBool = $iCompteur &gt; 550;
</pre>
<h3>Combinaison arithmétique et opérateurs</h3>
<p>Il s&#8217;agit sans doute de l&#8217;astuce la plus connue et utilisée. Elle permet d&#8217;identifier tout de suite ce qui est effectué.</p>
<pre class="brush: php">
/*Combination Arithmetic and Assignment Operators*/
$iCompteur = $iCompteur + 1000;
/*Shorter*/
$iCompteur += 1000;
</pre>
<p>Il en existe d&#8217;ailleurs un certain nombre qu&#8217;il faut connaître.</p>
<pre class="brush: php">
/*Combination Arithmetic and Assignment Operators*/
+= Addition
-= Soustraction
/= Division
*= Multiplication
%= Modulo
.= Concatènation
++ Incrémentation de 1
-- Diminution de 1
|= Opérateur logique ou
&amp;= Opérateur logique et
^= Opérateur logique ou exclusif
</pre>
<h3>Sens d&#8217;écriture du if</h3>
<p>Entre le test et l&#8217;assignation à une variable, il n&#8217;existe dans la plupart des langages qu&#8217;un caractère de différence. Il est très facile de l&#8217;oublier et ainsi de générer une assignation alors qu&#8217;on voulait écrire une expression booléenne.</p>
<pre class="brush: php">
/*Test*/
if ($a == 1) echo &quot;coucou&quot;;
/*Setting the variable $a to 1*/
if ($a = 1) echo &quot;coucou&quot;;
/*Could be written this way to avoid the mistake */
if (1 == $a) echo &quot;coucou&quot;;
/*The following code would generate a fatal error you would detect*/
if (1 = $a) echo &quot;coucou&quot;;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.dev-tharkun.com/astuces-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
