Fermer
Développement

PHP 5.5.0 est officiellement dans les bacs

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.

PHP 5.5.0 est officiellement dans les bacs

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

[sourcecode language=”PHP”]
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 :

[sourcecode language=”PHP”]
$generator = genseq();
foreach ($generator as $value) {
echo "$value\n";
}
[/sourcecode]

ou plus simplement

[sourcecode language=”PHP”]
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 :

[sourcecode language=”PHP”]
$hash=password_hash($password, PASSWORD_DEFAULT)’
[/sourcecode]

et une ligne pour le vérifier :

[sourcecode language=”PHP”]
$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 un foreach
  • Déréférencement litéral des array et string
  • 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…

Mots-clé : PHPPHP 5.5
Yohann Poiron

L’auteur Yohann Poiron

J’ai fondé le BlogNT en 2010. Autodidacte en matière de développement de sites en PHP, j’ai toujours poussé ma curiosité sur les sujets et les actualités du Web. Je suis actuellement engagé en tant qu’architecte interopérabilité.