PHP 7.1.0 disponible avec le support des types nullables et de nombreuses autres fonctionnalités
Mais aussi des gains de performance

Le , par Michael Guilloux, Chroniqueur Actualités
Un an après la sortie de PHP 7.0, la branche 7.x du langage de développement web côté serveur reçoit sa première itération majeure : la version 7.1. PHP 7.0 a apporté des gains de performance avec un moteur Zend Engine jusqu'à deux fois plus rapide que dans la version 5.6, mais également de nombreuses fonctionnalités.

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


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Riwalenn Riwalenn - Membre régulier https://www.developpez.com
le 08/12/2016 à 11:55
Bonjour à tous,
j'ai une question un peu "bête", je suis actuellement sur un site assez vieux qui apparemment est hébergé sur une plateforme php 5.5.38. Je voulais savoir si j'ai la possibilité de le rétrocompatibilisé si jamais php 7.0 n'allait ps du tout. (puis-je revenir en 5.5 sans casse ?) Le problème étant que je ne peux prendre actuellement de risques car nous sommes en période de très grosse affluence en décembre. (absolument rien à voir avec Noël)

Riwalenn
Avatar de TheGuit TheGuit - Membre du Club https://www.developpez.com
le 08/12/2016 à 16:10
Citation Envoyé par Riwalenn Voir le message
Bonjour à tous,
j'ai une question un peu "bête", je suis actuellement sur un site assez vieux qui apparemment est hébergé sur une plateforme php 5.5.38. Je voulais savoir si j'ai la possibilité de le rétrocompatibilisé si jamais php 7.0 n'allait ps du tout. (puis-je revenir en 5.5 sans casse ?) Le problème étant que je ne peux prendre actuellement de risques car nous sommes en période de très grosse affluence en décembre. (absolument rien à voir avec Noël)

Riwalenn
Alors si c'est une periode de forte affluence c'est peut-être pas hyper sage de le faire maintenant. Ensuite il est possible de faire du code PHP compatible 7 et 5.5 en ne profitant pas des nouveauté du 7. Tu as les informations par là bas : http://php.net/manual/fr/migration70.php
Avatar de Riwalenn Riwalenn - Membre régulier https://www.developpez.com
le 08/12/2016 à 16:12
Je te remercie TheGuit, je vais regarder cela tranquillement pour ne pas faire les choses à la hâte .
Avatar de ABCIWEB ABCIWEB - Expert éminent https://www.developpez.com
le 08/12/2016 à 17:13
@Riwalenn Pour le fait de revenir en arrière, cela dépend de ce que te propose ton hébergeur, mais en général y'a pas de souci et ça peut se faire en quelques secondes. Ce n'est pas à ce niveau que le problème se pose puisque le changement de config ne prend qu'un clic sans modifier aucun fichier du site, mais surtout si tu utilises un framework qu'il faudra mettre à jour si non compatible php7. Dans ce cas tu auras intérêt à faire des sauvegardes de fichiers avant la mise à jour au cas où elle se passerait mal.

A savoir aussi que les erreurs ne peuvent survenir que dans des contextes particuliers et donc il faut faire des tests assez poussés. Le mieux est de commencer par te renseigner au niveau des éventuels framework que tu utilises.

Comme l'a dit TheGuit il est plus raisonnable d'attendre une période plus calme.

NB : A savoir aussi si le site web est la seule application installée sur le serveur...
Avatar de tonguide tonguide - Candidat au Club https://www.developpez.com
le 09/12/2016 à 11:23
Le plus raisonnable serait de tester le site en local surtout, tu t'assures de n'avoir aucun bug sans pourrir ton serveur de prod.
Avatar de Kearz Kearz - Membre expert https://www.developpez.com
le 13/12/2016 à 12:08
Citation Envoyé par tonguide Voir le message
Le plus raisonnable serait de tester le site en local surtout, tu t'assures de n'avoir aucun bug sans pourrir ton serveur de prod.
Le plus raisonnable, c'est le serveur de recette.
Le local est rarement ISO en avec la prod, parce que le local peut servir pour plusieurs projet et avoir une configuration plus standard (plus souple). Surtout avec les trucs du type WAMP (LAMP).
(Après si le local est un vagrant ou docker ISO à la prod, ça va aussi)
Contacter le responsable de la rubrique Accueil