C'est en effet à cette date que Derick a mis le feu aux poudres en ajoutant dans le trunk la modification d'Ilia qui permet la vérification de type sur les arguments numériques d'une fonction ou d'une méthode.

Il est donc maintenant possible, avec la version du trunk, d'écrire ce code :

<?php function foo(int $anInteger, float $aFloat) {...}; ?>

En résumé, il est donc maintenant possible d'imposer n'importe quel type pour les arguments d'une fonction ou d'une méthode, alors qu'il n'était possible auparavant que d'imposer une classe, une interface, ou un tableau.

L'arrivé de cette modification a donc été salué comme il se doit, d'autant que le code nécessaire était en attente depuis quasiement deux ans et que c'est une fonctionnalité très demandée par la communauté des utilisateurs.

Pourtant, tout le monde n'a pas partagé l'allégresse générale.

Deux jours après l'ajout de la modification, Zeev Zuraski a fait savoir qu'il n'était pas du tout en accord avec la philosophie de la solution implémentée.

De son point de vue, qu'il développe dans une RFC, l'implémentation choisie, qui consiste à faire générer par le langage une erreur si l'argument reçu par une fonction ou une méthode n'est pas du type attendu, va à l'encontre de la philosophie de fonctionnement de PHP en ce qui concerne le typage.

Le langage effectue en effet de sa propre initiative et de manière transparente pour le développeur les conversions nécéssaires pour que le code fonctionne correctement, du moins en ce qui concerne les types numériques.

C'est la raison pour laquelle le code suivant fonctionne parfaitement :

<?php
function foo($whateverYouWant)
{

if ($whateverYouWant > 100)
{
echo "Greater than 100 !";
}
}

foo('123bar');
?>

En conséquence, Zeev veut que la modification soit retirée du trunk et il propose une alternative.

Au lieu de vérifier le type de l'argument et de générer une erreur s'il n'est pas celui attendu par la fonction ou la méthode, il propose que l'argument soit converti par le langage dans le type attendu et qu'aucune erreur ne soit générée.

Zeev étant ce qu'il est, il dispose d'un certain poids au sein de la communauté, et il a de plus un certain nombre de fans.

Deux camps se sont donc formés, l'un militant pour la solution de Zeev et l'autre étant pour la solution d'Ilia.

Le débat a pris une telle ampleur que j'ai même eu la surprise de voir Lukas Kahwe Smith et Andi Gutmans intervenir, alors que l'un a pris sa retraite et que l'autre ne prend que très rarement par aux discussions sur la liste de diffusion des contributeurs.

Pour l'instant, aucun des deux camps n'a pris le pas sur l'autre, et la modification suscitant tant de controverses est toujours présente dans le trunk.

Cependant, l'arrivé d'Andi Gutmans dans la discussion pourrait faire évoluer les choses, sa parole faisant force de loi au sein des contributeurs.

Par ailleurs, il est à noter que malgré tout ce bordel débat, des développeurs ont continué à travailler.

L'interpréteur de commande de PHP a été amélioré et il est maintenant possible de définir l'invite de commande ainsi que l'utilitaire qui permettra d'affichier le résultat des commande page par page, de la manière suivante :

# php -a
php > #cli.pager=less
php > phpinfo();
// output will appear in the pager
php > #cli.pager=grep -i readline
php > phpcredits();
Readline => Thies C. Arntzen
php > #cli.pager=
// output appears again direct on the terminal
php > #cli.prompt=\e[032m\v \e[031m\b \e[34m\> \e[0m5.3.99-dev php >
//Colorful prompt with version number
php > #cli.prompt=`echo gethostname();` \b \>
hostname php >

Enfin, vous aurez peut-être remarqué que je ne présente plus le trunk comme étant la prochaine version majeure de PHP.

Il semble en effet que ce dernier ne soit qu'un outil de travail pour les contributeurs et que la prochaine version du langage n'inclus qu'une partie de ses fonctionnalités.

Cependant, le rôle du trunk fait apparament débat au sein même de la communauté des contributeurs.

Je suis donc en attente d'informations complémentaires sur le sujet et je vous en ferais part dès que possible.