Sortie de PHP 7 : Fonctionnalités clés et ce qu'il faut savoir
Si vous êtes développeur, vous savez probablement que la version bêta feature-complete du nouveau PHP 7 est sortie. La version 7.0.0 contient de nombreuses fonctionnalités et fonctionnalités intéressantes. Cependant, nous vous recommandons de ne pas l'utiliser en environnement de production jusqu'à ce que vous obteniez la version stable, attendue en novembre 2015.
Vous êtes libre de tester et jouer avec la dernière version bêta, et de signaler les bugs si vous en découvrez pendant les tests. Nous listons tous les changements/améliorations que vous verrez dans PHP 7.0.0.
16. C'est PHP 7 (pas 6)
La version stable actuelle est PHP 5.6. Donc, beaucoup de développeurs s'attendaient à la version 6.0. Ce qu'ils ne savent pas, c'est que PHP 6 a déjà existé par le passé en tant que processus expérimental, mais n'a jamais atteint la phase de production. L'équipe de développement principal a décidé de sauter le nom PHP 6 pour la prochaine version majeure.
15. Support 64 bits Windows
La version PHP actuelle ne fournit pas de support pour les entiers 64 bits ou les gros fichiers. Les choses vont changer à l'avenir, car PHP 7 introduit un support 64 bits cohérent, ce qui signifie que les entiers 64 bits natifs et les gros fichiers seront supportés.
14. Suppression des fonctions et extensions obsolètes
L'un des principaux objectifs de PHP 7 était de libérer de la mémoire pour permettre des améliorations, il est donc devenu nécessaire d'éliminer les anciennes API serveur non supportées, extensions et fonctionnalités dépréciées.
Tous les éléments supprimés n'étaient plus utilisés depuis longtemps. Cependant, si vous avez une application legacy tournant sur d'anciennes versions, la mise à jour vers PHP 7 peut potentiellement casser le code.
À lire : 30 outils de suivi de bugs pour développeurs
13. Déclarations de groupe use
Cette RFC a été créée pour améliorer l'implémentation actuelle des espaces de noms PHP en introduisant le concept de groupe de déclaration. Cette fonctionnalité est utile pour les codeurs qui importent habituellement de nombreuses classes du même espace de noms. La nouvelle syntaxe élimine la verbosité, rend votre code plus propre et vous fait gagner beaucoup de temps de frappe.
12. Classes anonymes
Le concept de classes anonymes est déjà utilisé dans d'autres langages de programmation orientés objet comme Java et C#. Ce ne sont rien d'autre que des classes sans nom qui peuvent accélérer le codage ainsi que le temps d'exécution. Vous devriez les utiliser quand une classe n'est utilisée qu'une seule fois pendant l'exécution et quand une classe n'a pas besoin d'être documentée.
11. Syntaxe de variable uniforme
La syntaxe de variable uniforme résout de nombreuses incohérences dans la façon dont les expressions sont évaluées. Par exemple, la capacité d'appeler une closure assignée à des propriétés en utilisant ($object->closureProperties)(), ainsi que la possibilité d'enchaîner des appels statiques.
Dans les anciennes versions de PHP, $obj->$properties['name'] accédait à la propriété dont le nom est dans la clé name du tableau properties. Maintenant, elle accéderait à la clé name de la propriété dont le nom réside dans $properties.
10. Syntaxe d'échappement de point de code Unicode
Le nouveau caractère d'échappement (\u) nous permet de spécifier les points de code de caractères Unicode (en hexadécimal) sans ambiguïté à l'intérieur des chaînes. Par exemple, si vous ne pouvez pas taper un emoji, vous pouvez utiliser sa séquence d'échappement à la place.
9. Classe parente partagée dans la gestion des exceptions
Pour les codeurs PHP, gérer les erreurs fatales et attrapables n'a jamais été une tâche facile. Avec les nouvelles Engine Exceptions, vous pouvez remplacer ces types d'erreurs par des exceptions.
Pour permettre aux codeurs d'attraper à la fois les exceptions traditionnelles et les exceptions du moteur, PHP 7 introduit une nouvelle classe parente partagée sous le nom de \BaseException.
8. Liaison de closure à l'appel
Closure::bind() et Closure->bindTo() vous permettent de changer la liaison de $this et la portée d'appel, séparément ou ensemble, créant une closure dupliquée. Dans PHP 7, il y a un moyen facile de faire cela au moment de l'appel, en liant à la fois $this et la portée d'appel au même objet avec l'ajout de Closure->call(). La méthode prend l'objet comme premier argument, suivi de tout argument à passer dans la closure.
7. Opérateur de coalescence nulle
L'opérateur de coalescence est dénoté par « ?? ». Il retourne le résultat de son premier opérande s'il existe et n'est pas NULL, sinon il retourne le second opérande. Cela signifie qu'il est complètement sûr d'utiliser la coalescence car elle ne lèvera pas de E_NOTICE même si la valeur n'existe pas.
6. Opérateur de comparaison combiné
L'opérateur de comparaison combiné (aussi connu sous le nom d'opérateur spaceship) est similaire à version_compare() ou strcmp() en comportement, mais il peut être utilisé sur toutes les valeurs PHP génériques. Il existe déjà en Ruby et Perl.
L'opérateur retourne -1 si l'opérande de gauche est plus petit, 0 si les deux sont égaux et 1 si l'opérande de gauche est plus grand.
5. Expression de retour de générateur et délégation de générateur
L'expression de retour de générateur vous permet de retourner une valeur à l'achèvement réussi d'un générateur. Dans PHP 7, vous pouvez appeler $generator->getReturn() pour récupérer la valeur de retour. Si le générateur n'a pas encore retourné ou a lancé une exception non attrapée, $generator->getReturn() lancera une exception. Dans le cas où le générateur s'est terminé mais sans retour, NULL est retourné.
La fonctionnalité de délégation de générateur vous permet de retourner une autre structure itérable qui peut elle-même être parcourue, qu'il s'agisse d'un itérateur, d'un tableau ou d'un autre générateur. L'itération de la sous-structure est effectuée par la boucle originale la plus externe, plutôt que par une récursive.
4. Déclarations de type de retour
Beaucoup de programmeurs aimeraient déclarer le type de retour d'une fonction. Cela aide à prévenir les valeurs de retour non intentionnelles et les sous-types de casser le type de retour attendu du super-type, surtout dans les interfaces. De plus, PHP 7 apporte 4 nouvelles déclarations de type pour les types scalaires – string, int, float et bool. Ces nouveaux types permettent aux codeurs de spécifier qu'ils attendent un entier, un float, une chaîne et un booléen à retourner.
Dans l'image ci-dessus, la fonction foo est censée retourner un tableau. Regardez quelques exemples complexes.
3. Arbre de syntaxe abstraite
Le changement le plus important et le plus invisible est l'ajout d'un arbre de syntaxe abstraite – une représentation intermédiaire du code pendant la compilation. Il remplace la pratique existante d'émettre des opcodes directement depuis l'analyseur. Cela permet de supprimer un certain nombre de hacks et rend l'implémentation plus compréhensible et maintenable. Aussi, vous pouvez implémenter une syntaxe qui n'était pas réalisable avec un processus de compilation en un seul passage.
2. Le tout nouveau Zend Engine
Le premier Zend Engine a été introduit en 1999 dans PHP 4. C'est un moteur de script open source (écrit en C) qui interprète PHP. La version PHP actuelle utilise Zend Engine II, qui fournit la gestion de la mémoire et des ressources et ajoute un modèle objet extensible et une amélioration significative des performances au langage.
Le nouveau Zend Engine III, originellement nommé phpng, est en développement pour PHP 7.
1. Performance + Économie de mémoire
La plus grande raison de passer à PHP 7 est sa performance. C'est une bonne nouvelle, surtout pour les hébergeurs plus petits, car ils pourront héberger plus de clients sur le même matériel. La performance de la 7e version est à égalité avec Facebook HHVM, qui propose un compilateur JIT (just-in-time) permettant la compilation à l'exécution plutôt qu'avant l'exécution. Il y a aussi une économie de mémoire substantielle, grâce à l'optimisation des structures de données internes.
Recommandé : 30 bibliothèques PHP incroyables pour programmeurs et développeurs
Comme vous pouvez le voir dans le graphique publié par Zend, une requête WordPress sur PHP 5.6 s'exécute en moins de 100M d'instructions CPU, tandis que PHP 7 n'en exécute que 25M pour faire le même travail. De plus, les tests montrent que vous pouvez exécuter 3x plus de transactions Magento sur le même matériel, et Drupal 8 tourne 72 % plus vite avec PHP 7.
Technologie industrielle
- Solutions de gestion d'actifs : Construire une infrastructure de services publics robuste pour la fiabilité et l'efficacité des coûts
- Conception de circuit UPS : construire des systèmes de secours batterie fiables
- Moteurs à réluctance variable : types, fonctionnement et applications
- Évolution de la Chaîne d'Approvisionnement PCB : Pourquoi la Disponibilité Prime sur le Prix
- Sylvia Wower de DVIRC honorée comme Innovatrice de l'année par la Foundation for Manufacturing Excellence
- Avance rapide vs avance haute en usinage CNC : Guide clair
- Comment les wagons de fret deviennent des actifs IoT intelligents avec le système de condition monitoring de Bosch
- Optimiser les déploiements avec les builds multi-étapes Docker
- Wayfair et COVID-19 : naviguer les défis des vendeurs exonérés de taxe dans une économie post-pandémie