Recap

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 7

CHAPITRE 1: Quoi de neuf avec PHP 8

Selon le site Web w3techs.com, début 2021, PHP était utilisé d'une manière ou d'une autre par
plus de 79 % de tous les sites Web, soit 70 % d'avance sur son plus proche rival, ASP.NET.

Avec la dernière version 8, ainsi que JavaScript, ces piliers du développement Web moderne
semblent destinés à rester importants pour le développement Web pendant de nombreuses
années à venir. Jetons donc un coup d'œil aux nouveautés de la dernière version de PHP.

À propos de ce chapitre

Ce court chapitre est plutôt un résumé ou une mise à jour. le chapitre n'inclut pas seulement
des informations utiles au développeurs PHP, mais le chapitre fournit des détails sur certaines
des améliorations les plus avancées qui ont été réalisés en PHP.

Si l’un des sujets suivants est un sujet que vous n’avez pas encore abordé dans ce cours ou
ailleurs, ne vous inquiétez pas; vous n’en avez pas (encore) besoin dans votre boîte à outils de
développement. Mais avec ceux que vous avez vus auparavant, vous comprendrez ce qui a
été ajouté ou modifié et vous aurez une idée de la façon de l’utiliser.

PHP 8

La version 8 de PHP marque une mise à jour majeure et une énorme étape, apportant un
certain nombre de nouvelles fonctionnalités aux éléments suivants: type, système, gestion des
erreurs de syntaxe, chaînes, programmation orientée objet, et plus.
Les nouvelles fonctionnalités rendent PHP plus puissant et facile à utiliser tout en minimisant
les changements qui pourraient rompre ou modifier les installations existantes.

Par exemple, les paramètres nommés, Just In Time (JIT) compilation, les attributs et les

propriétés du constructeur apportent des améliorations et des changements de syntaxe


majeurs, une gestion améliorée des erreurs, ainsi que des changements et améliorations des
opérateurs pour aider à réduire les risques de bogues.
Named Parameters [Paramètres nommés]
En plus des paramètres de position traditionnels, dans lesquels l'ordre dans lequel les
arguments sont transmis doivent toujours être les mêmes, PHP 8 autorise les paramètres
nommés dans les appels de fonction, comme ceci:

Cela fait que les noms de paramètres de fonction (ou de méthode) font partie de l'Application
Programming Interface [API] publique et vous permet de transmettre des données d'entrée
dans une fonction, en fonction de leurs noms d'arguments, au lieu de l'ordre des arguments,
augmentant ainsi considérablement la clarté du code. Par conséquent, comme les paramètres
sont transmis par leur nom, leur ordre n'a plus d'importance, ce qui devrait conduire à moins
de bogues difficiles à trouver. Par ailleurs, str_contains (expliqué plus tard) est également
nouveau dans PHP 8.
Les attributs
Dans PHP 8, les attributs (tels que les propriétés et les variables) correspondent aux noms de
classes PHP, permettant l'inclusion de métadonnées dans les classes, les méthodes et les
variables. Auparavant, vous auriez dû utiliser les commentaires DocBloc pour les déduire.

Les attributs sont un moyen de donner à un système ou à un programme des détails sur un
autre système, tels que un plug-in ou un système d'événements, et sont des classes simples
annotées avec le #[Attribute] Attribut, qui peut être attaché aux classes, propriétés, méthodes,
fonctions, constantes de classe ou paramètres de fonction/méthode.

Constructor Properties
Avec PHP 8, vous pouvez désormais déclarer les propriétés de classe directement depuis le
constructeur de classe. Prenons par exemple ce code:
Avec les propriétés du constructeur, vous pouvez désormais réduire tout cela à ce qui suit:

Il s'agit d'une fonctionnalité rétrocompatible, utilisez-la donc uniquement lorsque vous êtes
sûr que PHP 8 est installé.
Just-In-Time Compilation
Lorsqu'il est activé, Just In Time (JIT) compile et cache les instructions natives (par
opposition à ce qui est connu sous le nom de OPcache, qui permet d'économiser le temps
d'analyse des fichiers) pour fournir une augmentation des performances aux applications
lourdes en CPU [Central Processing Unit].
Vous pouvez activer JIT dans le fichier php.ini comme ceci:
opcache.enable = 1
opcache.jit_buffer_size = 100M
opcache.jit = tracing

Gardez à l'esprit que JIT est relativement nouveau pour PHP et qu'il rend actuellement le
débogage et le profilage plus difficile avec la couche ajoutée.
Union Types
En PHP 8, les déclarations de type peuvent être étendues avec Union Types pour déclarer
plus d'un type (qui prend également en charge false comme type spécial pour Boolean false)
comme ceci:

Opérateur Null-Safe
Dans ce qui suit, l'opérateur ?-> null-safe court-circuitera le reste de la section s'il rencontre
une valeur nulle et renverra immédiatement une valeur nulle sans provoquer une erreur:

Auparavant, vous auriez dû utiliser plusieurs appels séquentiels à isset() pour chaque
section, en les testant tour à tour pour avoir une valeur nulle.

Expressions correspondantes [match Expressions]

Une expression de correspondance est comme un switch block, mais elle fournit des
comparaisons de type sécurisé, prend en charge une valeur de retour, ne nécessite pas
d'instruction break pour éclater et prend également en charge plusieurs valeurs
correspondantes. Donc ce switch block assez encombrant:

peut être remplacé par l'expression de correspondance suivante, beaucoup plus simple:
Nouvelles fonctions
PHP 8 fournit un certain nombre de nouvelles fonctions qui offrent de plus grandes
fonctionnalités et améliorations du langage, couvrant des domaines tels que la gestion des
chaînes, le débogage, et la gestion des erreurs.

str_contains
La fonction str retournera si une chaîne est contenue ou non dans une autre chaîne. C'est une
meilleure fonction que strpos, car strpos renvoie la position d'une chaîne dans une autre, ou la
valeur false si elle n'est pas trouvée. Mais il y a un problème potentiel car si la chaîne est
trouvée à la position zéro et que la valeur 0 est renvoyée, cela est évalué comme false à moins
que l'opérateur de comparaison stricte (===) ne soit utilisé à la place de ==.
Par conséquent, en utilisant strpos, vous devez écrire du code peu clair tel que celui-ci:

alors que le code utilisant str_contains, comme celui-ci, est beaucoup plus clair à comprendre
lors de l'analyse (et de l'écriture) rapide du code et est moins susceptible de conduire à des
bogues:

La fonction str_contains est sensible à la casse, donc si vous devez effectuer une opération
insensible à la casse. vérifiez que vous devez exécuter à la fois $needle et $haystack via une
fonction pour supprimez d'abord la casse, comme strtolower, comme ceci:
str_starts_with
La fonction str_starts_with fournit un moyen plus clair de vérifier si une chaîne commence
par une autre. Auparavant, vous utiliseriez probablement la fonction strpos et vérifieriez si
elle renvoie la valeur zéro, mais comme nous avons déjà vu que 0 et false peuvent être
confondus dans certaines situations, str_starts_with réduit considérablement cette possibilité.
Vous l'utilisez comme ceci:

Tout comme avec str_contains, La fonction str_starts_with est sensible aux majuscules et
minuscules, alors utilisez une fonction telle que strtolower sur les deux chaînes pour effectuer
un test insensible à la casse.
str_ends_with
Cette fonction fournit un moyen plus clair et plus simple de vérifier si une chaîne se termine
par un autre. Auparavant, vous utilisiez probablement la fonction substr, en lui transmettant la
longueur négative de $needle, mais str_ends_with rend cette tâche beaucoup plus simple.
Vous l'utilisez comme ceci:

get_resource_id
PHP 8 ajoute la nouvelle fonction get_resource_id qui est similaire à (int) $resource.
get_resource_id facilite la récupération d'un ID de ressource, mais le type de retour est vérifié
comme étant une ressource et la valeur de retour est un nombre entier, et ils sont donc de type
sécurisé.

get_debug_type
La fonction get_debug_type fournit des valeurs plus cohérentes que la fonction get type
existante et est mieux utilisée pour obtenir des informations détaillées sur une variable
inattendue dans les messages d'exception ou les logs, car elle est plus détaillée et fournit des
informations supplémentaires. Pour plus d'informations, veuillez vous référer au Wiki.

preg_last_error_msg
Les fonctions preg_ de PHP ne génèrent pas d'exceptions, donc s'il y a une erreur, vous devez
récupérer n'importe quel message en utilisant preg_last_error pour obtenir le code d'erreur.
Mais si vous voulez un message d'erreur convivial au lieu d'un simple code inexpliqué, dans
PHP 8, vous pouvez désormais appeler preg_last_error_msg. S'il n'y a pas d'erreur, alors
« Aucune erreur » est renvoyé.

Questions

1. Que permet désormais PHP 8 lors de la déclaration de propriétés de classe?


2. Qu'est-ce que l'opérateur null-safe et à quoi sert-il?
3. Comment utiliseriez-vous une expression de correspondance en PHP 8, et pourquoi
peut-elle être meilleure que l'alternative?
4. Quelle nouvelle fonction facile à utiliser pouvez-vous désormais utiliser dans PHP 8
pour déterminer si une chaîne existe dans une autre?
5. En PHP 8, quelle est la meilleure nouvelle façon d'effectuer un calcul de division en
virgule flottante sans provoquer d'erreur de division par zéro?
6. Qu'est-ce qu'un polyfill?
7. Quelle est une nouvelle manière simple dans PHP 8 de voir en clair l'erreur la plus
récente générée par un appel à l'une des fonctions preg_?

Vous aimerez peut-être aussi