PHP a parcouru un long chemin depuis qu’il a été libéré, et aujourd’hui la version 5.5 arrive à maturation avec quelques nouveautés intéressantes et des fonctionnalités de plus en plus poussées. PHP 5.5 est d’ores et déjà disponible au téléchargement, et il est également possible de l’installer aussitôt, ainsi que le code source qui est prêt à être décortiqué. Pour un changement de chiffre après la virgule, il y a beaucoup de nouvelles fonctionnalités.
Du point de vue du langage, PHP dispose aujourd’hui de certaines caractéristiques « modernes ». Vous pouvez maintenant faire usage des générateurs pour mettre en œuvre des itérateurs sur des données personnalisées, et ce sans le coût ou la complexité de l’implémentation d’une classe implémentant l’interface Iterator
. PHP introduit le mot clé yield
, que l’on retrouve dans d’autres langages.
Un générateur est simplement une fonction standard dont on au lieu de faire un seul retour, un générateur peut yield
autant de fois que nécessaire afin de fournir les valeurs à parcourir. Lorsqu’un générateur est d’abord appelé, il renvoie un itérateur qui peut être utilisé dans une boucle foreach
. Lorsqu’il est utilisé dans une boucle foreach
, la fonction générateur est appelée et renvoie la valeur spécifiée dans le yield
à la valeur utilisée dans la boucle. Lorsque l’on boucle, le générateur est repris à l’instruction qui suit le yield
de manière à fournir une séquence de valeurs.
Par exemple le code ci-dessous
function genseq() {
$i=1;
yield $i;
$i=6;
yield $i;
$i=27;
yield $i;
}
[/sourcecode]
génère la séquence 1, 6, 27 et peut être utilisé dans une boucle foreach
telle que :
$generator = genseq();
foreach ($generator as $value) {
echo "$value\n";
}
[/sourcecode]
ou plus simplement
foreach ($genseq() as $value) {
echo "$value\n";
}
[/sourcecode]
Il y a beaucoup d’autres choses à apprendre sur le yield
et la façon dont il peut être utilisé pour créer des solutions itératives sophistiquées et gérer les appels asynchrones.
L’ajout de générateurs est de loin le plus grand changement de base du langage, mais il est intéressant de noter que PHP n’a pas évolué qu’en ce sens. Les développeurs PHP qui jusque-là devaient se passer de la clause finally
dans les exceptions, pourront enfin en disposer. Il ajoute une structure qui a été absent de PHP depuis trop longtemps. Ainsi, lors de son utilisation, le code dans un bloc finally
sera toujours exécuté, c’est-à-dire indépendamment du fait que le code dans le bloc try
fonctionne ou provoque une exception, et avant de continuer l’exécution normale.
Un autre changement important est la nouvelle API de hachage des mots de passe. Compte tenu de la façon dont la sécurité est importante, le fait qu’il faut désormais une seule ligne pour créer un mot de passe salé est très intéressant :
$hash=password_hash($password, PASSWORD_DEFAULT)’
[/sourcecode]
et une ligne pour le vérifier :
$bool=password_verify($password, $hash);
[/sourcecode]
C’est un grand avantage, la crypto devenant beaucoup plus facile pour tous ! Cette nouvelle sécurisation du hachage et de la gestion des mots de passe, utilise une bibliothèque sous-jacente Bcrypt qui fournit un hachage très sécurisé qui devrait maintenir des mots de passe sûrs à condition qu’ils soient suffisamment long.
Il y a un certain nombre d’autres ajouts mineurs au langage :
- Support du
list()
dans unforeach
- Déréférencement litéral des
array
etstring
- Support de l’utilisation
empty()
sur le résultat des appels de fonction et d’autres expressions
Un grand changement de l’environnement d’exploitation est l’ajout de Zend Optimizer+, qui a été rendu open source plus tôt dans l’année. Il fait maintenant partie de la distribution de base, OPcache, et il améliore la génération du bytecode et du code des caches en mémoire partagée.
Bien sûr, comme pour toute les modifications d’un langage, ces nouvelles fonctionnalités sont susceptibles d’avoir des incompatibilités avec du code existant.
Elle pourrait également intéresser quelques utilisateurs de Windows XP, puisque PHP 5.5 n’est plus supporté par cet OS. Cependant, il est peu probable que de nombreux systèmes sous Windows XP agissent en tant que serveurs Web, ce qui signifie que le nombre de personnes touchées doit être faible.
Enfin, si vous vous dépêchez vous avez la possibilité d’ajouter les premiers commentaires de quelques-unes des pages de la documentation PHP, qui au moment où j’écris ces lignes semblent un peu vide…