mageekblog - Mot-clé - short_open_tagsLe blog personnel de Frédéric Hardy. Au menu, PHP, agilité, FreeBSD, cuisine et photographies.2021-12-02T08:20:54+01:00Frédéric Hardyurn:md5:26874ca5b8cd4cac8d08b0e68e64f63aDotclearPHP : les nouvelles du front #420urn:md5:775675c091a202ec40c14b5041c428052011-05-27T09:00:00+02:002011-05-27T12:54:34+02:00mageekguyPHP XGCCinternals@OracleparfaitPHPPHP 6Pierre JoyeRasmus LerdorfRFCshort_open_tagstrunk<p>10 jours viennent une nouvelle fois de s'écouler depuis <a href="http://blog.mageekbox.net/?post/2011/05/15/PHP-%3A-les-nouvelles-du-front-410">mon précédent billet</a> relatif au développement de <a href="http://www.php.net">PHP</a>.</p>
<p>À l'époque, les échanges sur la liste de diffusion des contributeurs, <a href="http://news.php.net/php.internals">internals@</a>, commençait à se calmer, après une période d'effervescence déclenchée par la volonté affichée des contributeurs de sortir une nouvelle version du langage basée sur le <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a>.</p>
<p>De vieux débats avaient alors ressuscité, notamment au sujet des annotations et du contrôle du type des arguments, ce qui avait entrainé des discussions parfois virulentes s'étalant sur plusieurs jours.</p>
<p>Des compromis avaient cependant finalement été trouvés, et <a href="http://news.php.net/php.internals">internals@</a> semblait donc bien partie pour retrouver son calme relatif habituel.</p>
<p><a href="http://blog.mageekbox.net/?post/2011/05/15/PHP-%3A-les-nouvelles-du-front-410">J'avais alors supposé</a> que ce n'était que temporaire, car <a href="http://blog.thepimp.net">Pierre Joye</a>, l'un des développeurs principaux du langage, ne s'était pas exprimé puisqu'il était en vacances.</p>
<p>Il semble cependant que je me sois trompé, car son retour n'a pas pour l'instant relancé les débats, même si quelques indices me laisse supposer que des discussions sont en cours en dehors d'<a href="http://news.php.net/php.internals">internals@</a>.</p> <p>Il n'y a donc pas eu de remises en cause, pour le moment, des décisions prises au cours de la période précédente, et pour l'instant, il semble bien que <a href="http://www.php.net">PHP</a> supportera un jour <a href="https://wiki.php.net/rfc/annotations-in-docblock">les annotations sous la forme de commentaires</a> dans le code.</p>
<p>Pour autant, d'autres décisions ont été prises, suite à des propositions ou à des questions posées sur la liste de diffusion.</p>
<p>Ainsi, les messages d'erreurs relatifs à l'analyse du code source d'un script vont (enfin) être amélioré afin d'être plus explicite.</p>
<p>La prochaine version du langage signera donc peut être bien la fin du <a href="http://www.google.fr/?q=T_PAAMAYIM_NEKUDOTAYIM#sclient=psy&hl=fr&site=&source=hp&q=T_PAAMAYIM_NEKUDOTAYIM&btnG=Recherche+Google&aq=f&aqi=&aql=&oq=T_PAAMAYIM_NEKUDOTAYIM&pbx=1&bav=on.2,or.r_gc.r_pw.&fp=e9ecfc087bf1bb74&biw=1920&bih=964">fameux message</a> d'erreur suivant :</p>
<blockquote><pre><code>Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in Command line code on line 1</code></pre></blockquote>
<p>Il devrait en effet être avantageusement remplacé par :</p>
<blockquote><pre><code>Parse error: syntax error, unexpected :: in Command line code on line 1</code></pre></blockquote>
<p>Et plus généralement, les noms des symboles correspondant aux instructions du langage devrait être remplacé par un descriptif explicite, tel qu'expliqué dans la <a href="https://wiki.php.net/rfc/improved-parser-error-message"><abbr title="Request For Comments">RFC</abbr> correspondante</a>.</p>
<p>La <abbr title="Standard PHP Libray">SPL</abbr>, et plus généralement les constructeurs des classes qui la compose, ont également fait l'objet d'un débat.</p>
<p>En effet, la documentation indique que plusieurs de ses classes disposent d'un constructeur, ce qui ne réflète pas forcément la réalité.</p>
<p>C'est par exemple le cas de la classe <code><a href="http://fr.php.net/splobjectStorage">\SplObjectStorage</a></code>, et en conséquence, dans une classe dérivée de cette dernière, un appel au constructeur de la classe <code><a href="http://fr.php.net/splobjectStorage">\SplObjectStorage</a></code> génère une erreur :</p>
<blockquote><pre><code><?php<br /><br />class mySplObjectStorage<br />{<br /> public function __construct()<br /> {<br /> parent::__construct(); // provoque une erreur.<br /> }<br />}<br /><br />?>></code></pre></blockquote>
<p>La discussion a rapidement débordé du cadre de la <a href="http://fr2.php.net/spl"><abbr title="Standard PHP Libray">SPL</abbr></a> pour aborder le problème de manière plus globale.</p>
<p>Il en est <a href="http://news.php.net/php.internals/52422">ressortie</a> que dans un premier temps, la <abbr title="Standard PHP Libray">SPL</abbr> devrait être modifiée pour ajouter les constructeurs manquant, et que dans un second temps, il soit étudié la possibilité qu'un appel à un constructeur ou à un destructeur absent d'une classe parente ne génére plus d'erreur.</p>
<p>Dans un autre registre, le débat concernant l'avenir de la syntaxe <code><?=</code> a également été relancé au cours de ces 10 jours.</p>
<p>Il était en effet prévu pour <a href="http://www.php.net">PHP</a> 6 que la directive <a href="http://php.net/manual/en/ini.core.php"><code>short_open_tags</code></a> soit supprimée de <a href="http://www.php.net">PHP</a>.</p>
<p>Or, la gestion de la notation <code><?=</code> est actuellement dépendante de l'implémentation de cette directive, et cette notation est très utilisée.</p>
<p>Les contributeurs ont donc décidé de découpler les deux fonctionnalités afin de pouvoir supprimer la directive <a href="http://php.net/manual/en/ini.core.php"><code>short_open_tags</code></a> de la prochaine version du langage tout en conservant la notation <code><?=</code>.</p>
<p>C'est d'ailleurs <del>Dieu</del> <a href="http://fr.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus Lerdorf</a> lui-même qui a mis fin au débat en <a href="http://svn.php.net/viewvc?view=revision&revision=311260">effectuant la modification nécessaire</a> sur le <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a>.</p>
<p>Cette période a également vu une amélioration des performances de <a href="http://www.php.net">PHP</a> pour tout ce qui concerne les calculs arithmètiques, grâce à l'utilisation de directive de compilation spécifique.</p>
<p>Pour l'instant, seules les versions du langage compilée avec <a href="http://fr.wikipedia.org/wiki/GNU_Compiler_Collection"><abbr title="Gnu Compiler Collection">GCC</abbr></a> pourront en bénéficier, mais il est prévu également <a href="http://news.php.net/php.internals/52473">le même type d'optimisation</a> pour Visual Studio.</p>
<p>Le gain est <a href="http://news.php.net/php.internals/52470">de l'ordre de 10%</a> lors de l'exécution d'un script spécifique destiné à mesurer les performances de <a href="http://www.php.net">PHP</a>.
</p>
<p>Cependant, pour des scripts ne faisant pas appel massivement à des calculs arithmétiques, soit la grande majorité des scripts existant, le gain n'est pas significatif.</p>
<p>Enfin, tout comme il sera possible d'écrire <code>myFunction()['myKey']</code> avec la prochaine version du langage, il sera possible d'instancier un classe et d'utiliser l'instance créer dans la foulée, sans passer par une variable intermédiaire :</p>
<blockquote><pre><code><?php<br /><br />new \myClass()->doSomething();<br /><br />// Remplace :<br />// $instance= new \myClass();<br />// $instance>doSomething();<br /><br />?></code></pre></blockquote>
<p>Le <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a> a quand a lui été modifié une soixantaine de fois sur la période qui vient de s'écouler.</p>
<p>Parmi ces modifications, il y a évidemment le lot habituel de corrections, puisque les bugs <a href="http://bugs.php.net?id=42060">#42060</a>, <a href="http://bugs.php.net?id=50363">#50363</a>, <a href="http://bugs.php.net?id=53782">#53782</a>, <a href="http://bugs.php.net?id=54269">#54269</a>, <a href="http://bugs.php.net?id=54529">#54529</a>, <a href="http://bugs.php.net?id=54721">#54721</a>, <a href="http://bugs.php.net?id=54727">#54727</a>, <a href="http://bugs.php.net?id=54804">#54804</a>, <a href="http://bugs.php.net?id=54895">#54895</a>, <a href="http://bugs.php.net?id=54912">#54912</a> et <a href="http://bugs.php.net?id=54924">#54924</a> ont été corrigés.</p>
<p>Des fuites de mémoire ont par ailleurs été colmatées, grâce à la mise en œuvre de <a href="http://labs.oracle.com/projects/parfait/">parfait</a>, un outil d'analyse de code C/C++ développé par <a href="http://labs.oracle.com/">Oracle</a> pour détecter entre autre ce genre de problème.
</p>
<p>Par ailleurs, l'interface <a href="http://php.net/manual/fr/install.fpm.php"><abbr title="FastCGI Process Manager">FPM</abbr></a> et le support de <a href="http://www.mysql.com/">MySQL</a>, via des corrections et des optimisations sur <a href="http://fr.php.net/manual/fr/book.mysqlnd.php">mysqlnd</a>, <a href="http://fr.php.net/manual/fr/book.mysql.php">mysql</a>, <a href="http://fr.php.net/manual/fr/book.mysqli.php">mysqli</a> et <a href="http://fr.php.net/manual/fr/book.pdo.php"><abbr title="<a href="http://blog.mageekbox.net/?post/2011/05/27/ http:="" www.php.net="">PHP</abbr></a> Data Object">PDO, ont été les plus gros bénéficiaires du travail effectué par les contributeurs sur ces 10 jours.</p>
<p>Enfin, Suite à la demande de <del>Dieu</del> <a href="http://fr.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus Lerdorf</a> lors de la période précédente, les tests unitaires du <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a> continuent à être corrigés.</p>
<p>Cette rétrospective est maintenant terminée, vous pouvez reprendre une activité normale.</p>http://blog.mageekbox.net/?post/2011/05/27/PHP-%3A-les-nouvelles-du-front-420#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/261