PHP 7.1 supporte également de nouvelles fonctionnalités avec encore des gains de performances. Côté performance, Zeev Suraski, cofondateur de Zend Technologies explique que la mise à jour fournit au langage un gain de performance de jusqu’à 35 % pour les charges de travail avec une utilisation intensive du CPU.
En ce qui concerne les nouvelles fonctionnalités du langage, on peut mettre en avant le support des types nullables qui permet de compléter un type de paramètre ou de retour en indiquant qu'il accepte en plus le type null. D’après la documentation officielle de PHP, « les déclarations de type pour les paramètres et les valeurs de retour peuvent maintenant être marquées comme nullables en ajoutant comme préfixe un point d'interrogation(?) au nom du type. Cela signifie que, de même que le type spécifié, null peut être passé comme argument ou retourné comme valeur ».
PHP 7.1 introduit également un type de retour void qui permet d’indiquer qu’une fonction ne retourne rien. Dans la documentation de PHP, il est expliqué que « les fonctions déclarées avec void comme type de retour doivent soit omettre leur instruction de retour complètement, soit utiliser une instruction de retour vide », en précisant que « Null n'est pas une valeur de retour valide pour une fonction void ».
Cette nouvelle version de PHP vient aussi avec un nouveau pseudo-type similaire à callable. Appelé Iterable, il permet d'indiquer qu'une fonction accepte (ou retourne) aussi bien un array qu'un objet implémentant Traversable. « Il peut être utilisé dans les types de paramètres et de retour, où il accepte soit les tableaux, soit les objets qui implémentent l'interface Traversable ». Dans le cas du sous-typage, « les types de paramètres des classes enfants peuvent élargir la déclaration d'un parent du type array ou de Traversable à Iterable. Avec les types de retour, les classes enfants peuvent restreindre le type de retour d'un parent du pseudo-type Iterable à array ou un objet qui implémente Traversable. »
PHP 7.1 ajoute encore le support pour spécifier la visibilité des constantes. Les constantes de classes supportent désormais les visibilités public, protected et private. Les constantes sans visibilité définies explicitement seront donc considérées comme publiques.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 | <?php class ConstDemo { const PUBLIC_CONST_A = 1; public const PUBLIC_CONST_B = 2; protected const PROTECTED_CONST = 3; private const PRIVATE_CONST = 4; } |
On note encore, dans cette version, la gestion des exceptions par capture multiple. Il est en effet désormais possible de spécifier plusieurs exceptions par bloc catch à l'aide du caractère pipe (|). D’après la documentation PHP, cela est utile lorsque différentes exceptions de différentes hiérarchies de classe sont traitées de la même manière.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 | <?php try { // some code } catch (FirstException | SecondException $e) { // handle first and second exceptions } |
Ce n’est pas la liste exhaustive des nouveautés et changements dans PHP 7.1. On peut par exemple encore noter que le support des serveurs push HTTP/2 a été ajouté à l'extension curl. Par ailleurs, une nouvelle méthode statique Closure::fromCallable() a été introduite dans la classe Closure pour permettre aux callables d'être facilement converties en objets Closure. PHP 7.1 déconseille également l’utilisation de l’extension mcrypt en faveur d’OpenSSL. L’extension mcrypt sera supprimée du noyau et du référentiel des extensions PHP dans PHP 7.2. Il est également important de noter que des changements de rupture de compatibilité avec PHP 7.0 ont été introduits dans la nouvelle version.
Sources : Annonce de la sortie de PHP 7.1, Nouvelles fonctionnalités dans PHP 7.1
Et vous ?
Que pensez-vous de cette nouvelle version de PHP ?
Quelles sont les fonctionnalités que vous appréciez le plus et qu’attendez-vous de PHP 7.2 ?
Quelle version de PHP utilisez-vous actuellement ? Pourquoi ?
Voir aussi :
Quels sont vos éditeurs préférés pour programmer en PHP ? Partagez votre expérience avec les outils de programmation PHP
Le framework PHP Symfony vient de publier sa version 3.2.0, avec l'intégration d'un nouveau composant pour la gestion des workflows