Les fonctionnalités nouvelles et améliorées de PHP 7.2.0

Publié: 2018-03-03
La nouvelle version de PHP 7.2.0 comprend de nombreux ajouts intéressants. Il offre plus de fonctionnalités, de nouvelles améliorations et de meilleures fonctionnalités. Il permet à l'utilisateur d'écrire un meilleur code et d'utiliser plusieurs fonctionnalités de langage intéressantes comme jamais auparavant. Dans cet article, nous examinerons les derniers aspects introduits dans la dernière itération de PHP.


La mise à jour offre de nombreuses nouvelles améliorations. Il est livré avec de nombreuses fonctionnalités qui assurent un meilleur codage. Les nouvelles fonctionnalités de PHP 7.2.0 incluent :

  • Indice de saisie d'objet
  • Comptage de divers objets non dénombrables
  • Conversion des clés numériques dans les casts de tableau/objet
  • Extension Mcrypt supprimée
  • Argon2 dans le hachage du mot de passe
  • HashContext comme objet
  • Meilleures constantes TLS à diverses valeurs saines
  • Nouvelle extension de sodium

Comme nous le savons, les développeurs Web aiment ou détestent généralement utiliser le langage PHP. Quiconque aime vraiment utiliser PHP adorera certainement cette nouvelle solution de codage.

Si vous êtes un développeur Web qui aime travailler avec PHP, lisez la suite pendant que nous discutons des nouvelles fonctionnalités les plus importantes de la mise à jour PHP 7.2.0.

Principales améliorations de PHP 7.2.0

Voici quelques-unes des principales améliorations de la dernière mise à jour de PHP.

La solution pour le bogue des propriétés de trait

Jusqu'à la sortie de PHP 7.2.0, il y avait un bogue de propriété de trait non corrigé. Dans la dernière mise à jour, si un trait définit une propriété, une classe ne peut pas définir une propriété ayant le même nom à moins qu'elle ne soit plus compatible (même valeur initiale et visibilité). Sinon, il émet une erreur fatale.

Ainsi, contrairement à PHP 7 et PHP 7.1, nous pouvons maintenant nous attendre à recevoir une erreur fatale. Ce comportement a été corrigé dans la récente mise à jour de PHP, et il fonctionne maintenant comme indiqué dans la documentation PHP. Maintenant, vous pouvez faire une comparaison stricte. Lorsque vous exécutez le script en PHP 7.2, vous serez averti d'une erreur fatale.

Déclaration de type de retour

La récente mise à jour de PHP 7 ajoute un support supplémentaire pour les déclarations de type de retour. Tout comme les déclarations de type d'argument, ce type de déclaration indique également le type de la valeur qui est susceptible de revenir d'une fonction. Pour la déclaration de type de retour, les mêmes types sont proposés que pour les déclarations de type d'argument.

En PHP 7.2.0, un utilisateur est autorisé à utiliser la déclaration de type de retour en termes de type de données d'objet.

De plus, le typage strict a également un impact sur les déclarations de type de retour. Compte tenu du mode faible par défaut, toutes les valeurs renvoyées sont converties au type exact (dans le cas où elles sont différentes et pas déjà de ce type). Cependant, en mode fort, toutes les valeurs renvoyées doivent être du type exact/correct. Sinon, une TypeError est reçue.

Cependant, une méthode enfant doit faire correspondre la déclaration de type de retour avec celle de la méthode parent lorsque vous redéfinissez une méthode parent. Mais si un type de retour n'est pas défini par la méthode parent, alors une méthode enfant peut le définir.

Expressions de retour du générateur

Cette fonctionnalité de PHP est basée sur une fonctionnalité publiée dans PHP 5.5 appelée fonctionnalité de générateur. Il permet d'utiliser une instruction de retour dans le générateur et de permettre à l'expression finale d'être renvoyée. Cependant, le retour par référence est limité. La valeur peut être obtenue en utilisant une nouvelle méthode Generator " getReturn()" qui n'est utilisée que lorsque le générateur a fini de produire des valeurs.

Néanmoins, la capacité de renvoyer clairement une valeur finale à l'aide d'un générateur est certainement une capacité pratique à posséder. En effet, il permet le retour complet d'une valeur finale, par un générateur, ce qui peut notamment être géré par un code client exécutant le générateur. En comparaison, c'est beaucoup plus simple que de forcer un code client à vérifier d'abord si la valeur finale est donnée ou non, puis à gérer la valeur en particulier.

Options de session

Session_start() reconnaît désormais de nombreuses options qui remplacent les différentes directives de configuration de session définies dans php.ini.

Ces options ont également été étendues pour faciliter session.lazy_write, qui reste activé par défaut et oblige PHP à écraser tout fichier de session avec la modification des données de session uniquement et read_and_close . Il s'agit d'une option qui n'est passable qu'à session_start() pour confirmer que les données de la session doivent être lues, puis la session doit être immédiatement fermée tout en restant inchangée.

Améliorations de la sécurité dans PHP 7.2.0

Voici les récentes améliorations de sécurité implémentées dans PHP 7.2.0.

Algorithme Argon 2 dans le hachage de mot de passe

Argon 2, vainqueur du concours de hachage de mot de passe en 2005, est un algorithme de hachage puissant. Argon2 est en train d'être reconnu comme la norme Internet universelle. Actuellement, l'algorithme est considéré comme plus rentable et plus sûr que Bcrypt, un autre algorithme de hachage. L'Argon2 nouvellement intégré peut être utilisé via la fonction - password_hash().

Alors que Bcrypt ne prend en compte qu'un seul facteur de coût, le nouvel Argon2 prend en compte les trois facteurs de coût suivants :

  1. Un coût en temps - définit le nombre d'itérations de l'algorithme de hachage
  2. Un coût de mémoire définit les nombres de KiB qui doivent être utilisés lors du hachage.
  3. Un facteur de parallélisme - définit le nombre de threads parallèles qui seront consommés pendant le hachage.

Les facteurs de coût par défaut sont définis par les trois nouvelles constantes comme suit :

  • PASSWORD_ARGON2_DEFAULT_TIME_COST
  • PASSWORD_ARGON2_DEFAULT_MEMORY_COST
  • PASSWORD_ARGON2-DEFAULT-THREADS
Lib-sodium remplace Mcyrpt

Une autre amélioration majeure de PHP 7.2.0 est la suppression de la bibliothèque cryptographique conventionnelle Mcrypt du noyau PHP et l'ajout de Libsodium.

Mcrypt était considéré comme un abandonware et une restriction à la croissance du langage. C'est pourquoi il a été remplacé par Libsodium dans PHP 7.2.0. Libsodium est une bibliothèque de cryptographie avancée qui fournit un chiffrement authentique ainsi qu'une cryptographie à courbe elliptique efficace.

Libsodium est composé d'algorithmes soigneusement choisis qui sont mis en œuvre par des experts en sécurité pour prévenir les vulnérabilités des canaux secondaires. En d'autres termes, Libsodium est une bibliothèque multilingue et multiplateforme pour le déchiffrement, le chiffrement, le hachage de mot de passe, la signature, etc.


Caractéristiques et fonctions obsolètes

Voici quelques-unes des fonctions et fonctionnalités obsolètes de PHP 7.2.0 qui devraient être supprimées avant la sortie de PHP 8.0.

Gmp_random() est considéré comme une fonctionnalité dépendante de la plate-forme et est susceptible d'être obsolète. Au lieu de cela, gmp_random_rage() et gmp_random_bits() seront utilisés.

(unset) le cast est une autre expression qui renvoie généralement null et est donc considérée comme inutile.

Each() est utilisé pour itérer sur un foreach() comme un tableau, mais foreach() est préféré en raison de sa vitesse plus élevée.

Le spl_autoload_register dans PHP 5.1 a remplacé la fonction _autoload . Mais maintenant, la dépréciation est susceptible de se produire lorsque la fonction est rencontrée lors de la compilation.

mbstring .fucc_overload a également été défini pour la dépréciation.

La fonction assert() confirme l'assertion donnée et prend les mesures adéquates s'il y a un résultat FALSE . L'utilisation de assert() avec des arguments de chaîne sera obsolète car elle provoque une vulnérabilité RCE.

La variable $php_errormsg est construite dans la portée locale lorsqu'une erreur non fatale est reçue. Mais maintenant, avec les versions de PHP 7.2.0, error_clear_last et error_get_last seront utilisés à la place.

$errcontext est susceptible d'être obsolète car cette fonctionnalité pose des problèmes d'optimisation. Étant donné que le $errcontext est utilisé pour modifier tous les objets et références dans la portée actuelle, cette fonctionnalité est à peine utilisée.

Create_function() a de nombreux problèmes de sécurité. De plus, il a également des problèmes d'utilisation de la mémoire et de mauvaises performances.

Pourquoi un développeur WordPress devrait-il utiliser PHP 7.2.0 ?

Les récentes mises à jour de PHP apportent de nouvelles fonctionnalités et des mesures de sécurité améliorées. Cela peut inclure des facteurs tels que la cryptographie moderne, des ajouts aux fonctionnalités de base et une vitesse de chargement plus rapide pour divers sites.

Avantages de l'utilisation de PHP

PHP est un langage hautement compatible qui peut être utilisé avec presque toutes les normes mondiales de base de données et de serveur (c'est-à-dire PostgreSQL, MySQL, Sybase, Oracle, Microsoft SQL Server et Informix). Il offre des performances rapides soutenues par une communauté open source.

Il est utilisé à diverses fins, telles que la génération de fichiers et de pages dynamiques. PHP vous permet de gérer et de stocker des informations dans une base de données de site. Il permet aux utilisateurs de crypter les données à l'aide de fonctionnalités de sécurité et limite l'accès non autorisé aux sites Web.

PHP est utilisé par de nombreux sites Web renommés tels que Yahoo, Facebook et Wikipedia.

Plus important encore, la dernière mise à jour de PHP 7.2.0 offre des améliorations de sécurité importantes, de nouvelles fonctionnalités intéressantes et des améliorations de performances.

Les performances de PHP 7.2.0

Selon les benchmarks de Phoenix, PHP 7.2.0 est 13 % plus rapide que 7.1 et près de 20 % plus rapide que 7.0. Comparé à PHP 2.6 (toujours utilisé par 40% des utilisateurs de PHP), il est presque 25% plus rapide.

Il existe de nombreux tests qui appuient ces statistiques et ces résultats. Le benchmark PHP officiel révèle que PHP 7 est deux fois plus efficace et deux fois plus rapide que 5.6. PHP 7 a la moitié de la latence. De plus, d'autres benchmarks comme Kinsta suggèrent que PHP 7 pourrait être jusqu'à trois fois plus rapide que les versions précédentes.

Comme indiqué ci-dessus, la principale raison de l'amélioration des performances de PHP 7.2.0 est l'inclusion de fonctionnalités avancées et les dépréciations d'anciennes fonctions. C'est exactement ce qui fait de cette version de PHP la solution idéale pour les utilisateurs de WordPress. Cependant, les développeurs doivent vérifier le code et mettre à jour les fonctions obsolètes pour s'assurer que tout est compatible.

Le support de sécurité de PHP 7.2.0

PHP 7.2.0 n'offre plus de support de sécurité. Cependant, le support critique sera toujours disponible jusqu'à la fin de 2018. La communauté PHP n'offre plus de support pour les problèmes mineurs et les bugs. La bonne nouvelle est que la dernière mise à jour de PHP 7.2.0 garantira le bon fonctionnement des mises à jour de sécurité avancées et que le projet sera soutenu en permanence par la communauté PHP.

Libsodium est à la fois la fonctionnalité la plus importante et la plus améliorée qui a migré de l'ancien PHP vers PHP 7.2.0. Heureusement, Libsodium est très facile à mettre à jour.

Si vous prévoyez de mettre à jour vers PHP 7.2.0, assurez-vous que votre code est composé d'intégration et de tests unitaires. De tels tests aideront à détecter tout problème lié à l'application avant qu'il n'apparaisse comme un bogue dans un environnement réel.

En un mot
PHP 7.2.0 est définitivement une mise à jour majeure par rapport aux versions précédentes telles que PHP 5.6. Lorsque vous mettez à niveau le code de PHP 5.6 vers PHP 7, vous pouvez rencontrer des incompatibilités, à la fois dans les bibliothèques dont dépend le code et dans le code lui-même. Cependant, les avantages de l'adoption de PHP 7.2 rendront vos efforts utiles.

Étant donné que PHP 7.2 est beaucoup plus rapide que les anciennes versions de PHP, cela permet à l'utilisateur d'offrir un service amélioré aux utilisateurs de son site Web en implémentant les codes avancés du langage PHP.

Alors, êtes-vous prêt à passer au nouveau PHP 7.2 ? Si vous ne l'avez pas encore mis à jour, c'est le bon moment pour commencer votre transition. Il est temps de vérifier les codes et de mettre à jour vos scripts.

Faites-nous savoir comment vous avez trouvé les nouvelles fonctionnalités et fonctions améliorées de PHP 7.2.0 dans la section commentaires ci-dessous !