IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

PHP 8.2 est disponible en bêta 2. Cette version propose null, true et false en tant que types autonomes
Ainsi que des constantes dans les traits

Le , par Stéphane le calme

100PARTAGES

24  0 
Depuis le 4 août, la bêta 2 de PHP 8.2 est disponible. La bêta 3 est attendue pour le 18 août et une série de 6 RC va débuter le 1er septembre pour s'achever le 10 novembre. PHP 8.2 sera en disponibilité générale le 24 novembre 2022.


Savoir à quoi s’attendre peut vous aider à vous préparer à la dernière version de PHP. En vous renseignant sur les nouvelles fonctionnalités et celles obsolètes, vous pouvez comprendre comment la mise à jour peut affecter votre développement. Cette connaissance peut également vous aider à vous préparer pour la sortie éventuelle.

Dans cette optique, passons en revue les fonctionnalités, les améliorations de performances, les modifications et les dépréciations.

De PHP 8.0 à PHP 8.1

Il est important de savoir à quelles modifications s’attendre avant la mise à niveau.

PHP 8.0

PHP 8.0, sorti en novembre 2020, a apporté une poignée de fonctionnalités essentielles. En plus des améliorations de la syntaxe et des performances, la version comprenait :
  • Des arguments nommés
  • la syntaxe de correspondance
  • les types de syndicats
  • Promotion Propriété Constructeur
  • JIT (qui affecte la façon dont PHP exécute le code source)

Les arguments nommés permettent de passer des arguments à une fonction en fonction du nom du paramètre, plutôt que de la position du paramètre. Cela rend la signification de l'argument autodocumentée, rend les arguments indépendants de l'ordre et permet de sauter arbitrairement les valeurs par défaut.

Pour donner un exemple simple :

Code PHP : Sélectionner tout
1
2
3
4
5
//en utilisant des arguments de position:   
array_fill(0, 100, 50);   
  
//en utilisant des arguments nommés:   
array_fill(start_index: 0, num: 100, value: 50);

L'ordre dans lequel les arguments nommés sont passés n'a pas d'importance. L'exemple ci-dessus les passe dans le même ordre qu'ils sont déclarés dans la signature de la fonction, mais tout autre ordre est également possible.

PHP 8 introduit deux moteurs de compilation JIT (juste à temps/compilation à la volée). Le Tracing JIT, le plus prometteur des deux, montre environ trois fois plus de performances sur des benchmarks synthétiques et 1,5-2 fois plus de performances sur certaines applications à longue durée d'exécution. Généralement les performances des applications sont identiques à PHP 7.4.

Amélioration du système de typage et de la gestion d'erreur
  • vérification de type plus sévère pour les opérateurs arithmétiques et bit à bit ;
  • validation de méthode abstraite des traits ;
  • signature valide des méthodes magiques ;
  • reclassifications des avertissements du moteur ;
  • erreur fatale pour des signatures de méthodes incompatibles ;
  • l'opérateur @ ne silence plus les erreurs fatales ;
  • héritages avec les méthodes privées ;
  • type mixed ;
  • type de retour static ;
  • types pour les fonctions internes Discussion e-mail ;
  • objets opaques au lieu de ressources pour les extensions Curl, Gd, Sockets, OpenSSL, XMLWriter, et XML.

La nouvelle instruction match est similaire à switch et a les fonctionnalités suivantes :
  • Match est une expression, signifiant que son résultat peut être enregistré dans une variable ou retourné ;
  • les branches de match supportent uniquement les expressions d'une seule ligne, et n'a pas besoin d'une déclaration break ;
  • Match fait des comparaisons strictes.

Ainsi, dans PHP 7 vous aviez

Code PHP : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
switch (8.0) {  
  case '8.0':  
    $result = "Oh no!";  
    break;  
  case 8.0:  
    $result = "This is what I expected";  
    break;  
}  
echo $result;  
//> Oh no!

Et son équivalent en PHP 8

Code PHP : Sélectionner tout
1
2
3
4
5
echo match (8.0) {  
  '8.0' => "Oh no!",  
  8.0 => "This is what I expected",  
};  
//> This is what I expected

PHP 8.1

Un an plus tard est arrivé PHP 8.1, la dernière version majeure de PHP. Cette mise à jour comprend des fonctionnalités importantes, telles que :
  • Types d’intersections
  • Propriétés en lecture seule
  • Énumérations
  • le type de retour never

Les énumérations ou « Enums » permettent à un développeur de définir un type personnalisé limité à l'une des valeurs possibles parmi un nombre discret. Cela peut être particulièrement utile lors de la définition d'un modèle de domaine, car cela permet de « rendre les états invalides non représentables ».

Les énumérations apparaissent dans de nombreux langages avec une variété de fonctionnalités différentes. En PHP, les Enums sont un type particulier d'objet. L'Enum lui-même est une classe et ses cas possibles sont tous des objets à instance unique de cette classe. Cela signifie que les cas Enum sont des objets valides et peuvent être utilisés partout où un objet peut être utilisé, y compris les vérifications de type.

L'exemple le plus populaire d'énumérations est le type booléen intégré, qui est un type énuméré avec les valeurs légales true et false. Les énumérations permettent aux développeurs de définir leurs propres énumérations arbitrairement robustes.

Dans PHP 8.1, les énumérations sont limitées aux « énumérations d'unités », c'est-à-dire aux énumérations qui sont elles-mêmes une valeur, plutôt qu'une simple syntaxe sophistiquée pour une constante primitive, et n'incluent pas d'informations associées supplémentaires. Cette capacité offre une prise en charge considérablement étendue de la modélisation des données, des définitions de types personnalisées et du comportement de style monade. Les énumérations permettent la technique de modélisation consistant à « rendre les états invalides non représentables », ce qui conduit à un code plus robuste avec moins de tests exhaustifs.

Les responsables du langage recommandent d'utiliser les énumérations au lieu d'un...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de calande
Nouveau membre du Club https://www.developpez.com
Le 02/09/2022 à 23:38
Bonjour, pensez-vous que c'est une bonne idée d'apprendre le PHP à l'heure actuelle ? Je vois la popularité de PHP qui décline peu à peu au fil des années (index TIOBE par ex.) et j'ai peur que d'ici une dizaine d'années, ce langage devienne marginal comme l'est devenu le Perl. Je suis inquiet d'investir beaucoup d'énergie et de me lancer sur des années d'apprentissage pour un langage amené à décliner. Qu'en pensez-vous ?
0  0 
Avatar de Séb.
Expert éminent https://www.developpez.com
Le 03/09/2022 à 5:54
Perl a toujours été un langage de niche. Je minquieterai pour PHP le jour où d'autres langages/technos permettront de mettre en œuvre du web aussi facilement.
À l'heure actuelle, et à mon sens, son seul réel concurrent à ce niveau est une stack Node, mais JS & cie c'est la jungle et une remise en cause quotidienne.
Et puis, comme pour tout langage, c'est le principe qui compte. Si tu adoptes PHP, 1. ça ne te demandera pas spécifiquement des années d'apprentissage et 2. l'expérience engrangée te permettra de passer facilement sur une autre techno au besoin. Donc oui, apprend PHP, apprend les bonnes pratiques, apprend à bien structurer tes projets (Laravel/Symfony), ne t'enferme pas dans des trucs comme Wordpress, et garde en tête que PHP n'est pas destiné qu'au web (on peut faire du CLI aussi par ex.).
0  0 
Avatar de calande
Nouveau membre du Club https://www.developpez.com
Le 03/09/2022 à 7:09
Intéressant... Merci Séb. pour avoir partagé ton avis, oui, c'est vrai, ça se tient.
0  0 
Avatar de selmanjo
Membre régulier https://www.developpez.com
Le 08/09/2022 à 15:45
J'ai bien aimé le " match " qu'on retrouve dans pas mal de langages
0  0