mageekblog - Mot-clé - révolutionLe 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:26874ca5b8cd4cac8d08b0e68e64f63aDotclearLa révolution continue !urn:md5:d34c6fbaba9902ffd1847f542cbc15942011-07-23T22:00:00+02:002011-07-25T08:01:51+02:00mageekguyPHP Xinternals@magic quotesPHP 5.4révolution<p>Vendredi a été un jour à marquer d'une pierre blanche dans l'histoire de <a href="http://www.php.net">PHP</a>, car l'un des boulets du langage a été supprimés.</p>
<p>En effet, depuis cette date, la version en cours de développement de PHP 5.4 <a href="http://svn.php.net/viewvc?view=revision&revision=313575">ne supporte plus</a> les <q><a href="http://www.php.net/manual/fr/security.magicquotes.php">magic quotes</a></q>, grâce à un patch de <a href="http://blog.thepimp.net/">Pierre Joye</a> et <a href="http://www.adoy.net/">Pierrick Charron</a>.</p>
<p>Cette version sera donc la première à ne plus supporter cette fonctionnalité, et il s'agit d'un événement historique pour plusieurs raisons.</p> <p>Tout d'abord, c'est l'aboutissement d'un chemin qui a été long et douloureux à arpenter.</p>
<p>En effet, la suppression des <a href="http://www.php.net/manual/fr/security.magicquotes.php"><q>magic quotes</q></a> avait été planifiée par les contributeurs en <a href="http://www.php.net/%7Ederick/meeting-notes.html#magic-quotes">2005</a>, lors d'une réunion dont l'objectif était la définition de la feuille de route du <a href="http://blog.mageekbox.net/?post/2010/03/17/Repose-en-paix%2C-PHP-6">défunt PHP 6</a>.</p>
<p>Le développement de ce dernier ayant pris du retard, cette fonctionnalités avait été marquée comme étant obsolète avec la version 5.3 du langage.</p>
<p>Cependant, déjà à l'époque, cette simple modification avait suscité <a href="http://www.mail-archive.com/internals@lists.php.net/msg36039.html">un débat houleux</a> au sein de la communauté des contributeurs, car certains d'entres eux semblaient effrayés par l'impact de cette suppression sur le code existant de part le monde reposant sur cette fonctionnalité.</p>
<p>Pourtant, la question avait été abordé à plusieurs reprises sur <a href="http://news.php.net/php.internals">internals@</a>, la liste de diffusion des contributeurs, et il était déjà à l'époque de notoriété publique que les <q><a href="http://www.php.net/manual/fr/security.magicquotes.php">magic quotes</a></q> posaient <a href="http://www.php.net/manual/fr/security.magicquotes.whynot.php">plus de problèmes qu'elles n'en résolvaient</a>, puisque la documentation officielle du langage déconseille leur utilisation.</p>
<p>Le débat a donc <a href="http://marc.info/?t=129001021400001&r=2&w=2">repris de plus belle</a>, lorsque <a href="http://www.serverphorums.com/read.php?7,232453">la question de leur suppression a été remise sur le tapis</a> dans le cadre du développement de PHP 5.4, et ce débat <a href="http://news.php.net/php.internals/54126">a continué jusqu'à hier</a> et continuera peut être encore à l'avenir.</p>
<p>Il aura donc fallu plus de 6 ans de négociations, de tractations et de lobbying au sein de la communauté pour obtenir ce résultat, et rien que cela suffirait pour qualifier l'événement d'historique, mais il existe également d'autres raisons.</p>
<p>Cette suppression rend en effet PHP 5.4 incompatible avec du code existant, ce qui, pour ceux qui ne le saurait pas, est totalement contraire à la politique de développement du langage.</p>
<p>En effet, <a href="http://www.php.net">PHP</a> étant utilisé par un grand nombre de sites de par le monde, ses développeurs tiennent absolument à conserver la plus grande compatibilité possible entre chacune des versions du langage.</p>
<p>C'est la raison pour laquelle le moteur de PHP 5 est aujourd'hui toujours capable d'exécuter du code écrit en PHP 4, et c'est également la raison pour laquelle il a fallu si longtemps pour que la suppression des <q><a href="http://www.php.net/manual/fr/security.magicquotes.php">magic quotes</a></q> devienne effective.</p>
<p>Il a en effet fallu convaincre suffisamment de développeurs du bien fondé de cette décision, et surtout, il a fallu trouver la meilleure solution pour le faire.</p>
<p>Les fonctions permettant de connaître le statut des <a href="http://www.php.net/manual/fr/security.magicquotes.php"><q>magic quotes</q></a>, à savoir <code>get_magic_quotes_gpc()</code> et <code>get_magic_quotes_runtime()</code>, ont donc été conservées, afin de ne pas casser la compatibilité avec le code existant, mais elles retourne dorénavant toujours <code>false</code>.</p>
<p>De plus, les directives de configuration de PHP les concernant, soit <code>magic_quotes_gpc</code>, <code>magic_quotes_runtime</code> et <code>magic_quotes_sybase</code>, ont été supprimées et ne sont donc plus supportée dorénavant.</p>
<p>Un appel à la fonction <code>set_magic_quotes_runtime()</code>, qui permet d'activer les lors de l'exécution du code provoquera quand à lui dorénavant une erreur de type<code> E_CORE_ERROR</code>.</p>
<p>Enfin, il y a un autre facteur qui vient d'ajouter à la longueur du processus ayant permis leur suppression et à la cassure de la compatibilité qu'elle provoque qui font de l'abandon du support des <a href="http://www.php.net/manual/fr/security.magicquotes.php"><q>magic quotes</q></a> un événement historique.</p>
<p>La suppression de cette fonctionnalité a en effet été validée par la communauté des contributeurs et des utilisateurs au cours du <a href="https://wiki.php.net/todo/php54/vote">premier vote</a> organisé conformément à la <abbr title-="" request="" for="" comments="">RFC</abbr> sur le <a href="https://wiki.php.net/rfc/voting">sujet</a>.</p>
<p>Un vote a donc eu lieu publiquement, les votes ont été comptabilisés de manière fiable, tout le monde à eu l'occasion de s'exprimer, et les décisions correspondantes sont appliquées, et cela peut paraître surprenant, mais dans le microcosme des développeurs de PHP, c'est un peu comme si la Terre se mettait à tourner en sens inverse, à tel point que cela pourrait paraître trop beau pour être vrai.</p>
<p>Pourtant, ça l'est bel et bien, puisque le support de la notation courte pour la définition des tableaux a également été ajouté à la version de développement de PHP 5.4, également conformément au <a href="https://wiki.php.net/todo/php54/vote">vote</a>.</p>
<p>La version alpha 3 de PHP 5.4 devrait donc, en plus des nouveautés qu'elle apporte comme <a href="http://blog.mageekbox.net/?post/2010/05/17/Et-si-on-tirait-des-traits">le support des traits</a> ou <a href="http://blog.mageekbox.net/?post/2011/07/05/Test-du-serveur-http-int%C3%A9gr%C3%A9-%C3%A0-PHP-5.4">un serveur <abbr title="HyperText Transport Protocol">HTTP</abbr> intégré</a>, ne plus supporter les <a href="http://www.php.net/manual/fr/security.magicquotes.php"><q>magic quotes</q></a> et permettre la définition d'un tableau à l'aide des syntaxes suivantes :</p>
<blockquote><pre><code><?php<br />$tableau = [1, 2, 3, 4];<br />$tableau = ['un' => 1, 'deux' => 2, 'trois' => 3, 'quatre' => 4];<br />$tableau = ['un' => 1, 2, 'trois' => 3, 4];<br />?><br /></code></pre></blockquote>
<p>La <a href="http://blog.mageekbox.net/?post/2011/07/10/La-r%C3%A9volution-est-en-marche-%21">révolution débutée il y a quelques jours</a> est donc bien en marche, qu'on se le dise !</p>http://blog.mageekbox.net/?post/2011/07/23/La-r%C3%A9volution-continue-%21#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/276