Tout d'abord, c'est l'aboutissement d'un chemin qui a été long et douloureux à arpenter.

En effet, la suppression des magic quotes avait été planifiée par les contributeurs en 2005, lors d'une réunion dont l'objectif était la définition de la feuille de route du défunt PHP 6.

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.

Cependant, déjà à l'époque, cette simple modification avait suscité un débat houleux 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é.

Pourtant, la question avait été abordé à plusieurs reprises sur internals@, la liste de diffusion des contributeurs, et il était déjà à l'époque de notoriété publique que les magic quotes posaient plus de problèmes qu'elles n'en résolvaient, puisque la documentation officielle du langage déconseille leur utilisation.

Le débat a donc repris de plus belle, lorsque la question de leur suppression a été remise sur le tapis dans le cadre du développement de PHP 5.4, et ce débat a continué jusqu'à hier et continuera peut être encore à l'avenir.

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.

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.

En effet, PHP é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.

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 magic quotes devienne effective.

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.

Les fonctions permettant de connaître le statut des magic quotes, à savoir get_magic_quotes_gpc() et get_magic_quotes_runtime(), ont donc été conservées, afin de ne pas casser la compatibilité avec le code existant, mais  elles retourne dorénavant toujours false.

De plus, les directives de configuration de PHP les concernant, soit magic_quotes_gpc, magic_quotes_runtime et magic_quotes_sybase, ont été supprimées et ne sont donc plus supportée dorénavant.

Un appel à la fonction set_magic_quotes_runtime(), qui permet d'activer les  lors de l'exécution du code provoquera quand à lui dorénavant une erreur de type E_CORE_ERROR.

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 magic quotes un événement historique.

La suppression de cette fonctionnalité a en effet été validée par la communauté des contributeurs et des utilisateurs au cours du premier vote organisé conformément à la RFC sur le sujet.

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.

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 vote.

La version alpha 3 de PHP 5.4 devrait donc, en plus des nouveautés qu'elle apporte comme le support des traits ou un serveur HTTP intégré, ne plus supporter les magic quotes et permettre la définition d'un tableau à l'aide des syntaxes suivantes :

<?php
$tableau = [1, 2, 3, 4];
$tableau = ['un' => 1, 'deux' => 2, 'trois' => 3, 'quatre' => 4];
$tableau = ['un' => 1, 2, 'trois' => 3, 4];
?>

La révolution débutée il y a quelques jours est donc bien en marche, qu'on se le dise !