PHP 8, publié le 26 novembre 2020, a apporté des améliorations significatives et de nouvelles fonctionnalités au langage, améliorant ainsi les performances, la lisibilité et la convivialité. Cet article couvre les changements et ajouts les plus notables dans PHP 8.
Compilateur JIT (juste à temps)
Qu’est-ce que le JIT ?
Le compilateur Just-In-Time (JIT) est l'une des améliorations les plus importantes de PHP 8. Il améliore les performances en compilant le code au moment de l'exécution, offrant potentiellement une meilleure vitesse d'exécution pour les tâches gourmandes en CPU.
Comment fonctionne JIT
JIT traduit des parties du code en langage machine au moment de l'exécution, qui peut ensuite être exécuté directement par le CPU. Cela diffère de l’interprétation traditionnelle, où le code est exécuté ligne par ligne.
Avantages
- Performance: Améliorations significatives de la vitesse dans les tâches liées au processeur.
- Optimisation: Meilleures performances pour les applications impliquant des calculs lourds, comme les calculs scientifiques ou le traitement de données.
Types de syndicats
Définition
Les types d’union permettent à une variable de contenir plusieurs types. Cet ajout améliore le système de types en PHP, permettant des définitions de types plus précises.
Syntaxe
function foo(int|float $number): int|float {
return $number;
}
Avantages
- Sécurité: Réduit les erreurs liées au type.
- La flexibilité: Déclarations de type plus expressives et flexibles.
Arguments nommés
Définition
Les arguments nommés permettent de transmettre des arguments à une fonction en fonction des noms de paramètres plutôt que de leur position.
Syntaxe
function foo(string $a, string $b, string $c) {}
foo(a: 'first', c: 'third', b: 'second');
Avantages
- Lisibilité: Rend les appels de fonction plus lisibles.
- La flexibilité: Plus facile de travailler avec des fonctions qui ont de nombreux paramètres, notamment avec des valeurs par défaut.
Les attributs
Définition
Les attributs, également appelés annotations dans d'autres langages, permettent d'ajouter des métadonnées aux classes, méthodes, propriétés et paramètres.
Syntaxe
#[ExampleAttribute]
class Foo {
#[AnotherAttribute]
public function bar() {}
}
Avantages
- Métadonnées: Fournit un moyen standardisé de définir les métadonnées.
- Réflexion: Plus facile de travailler avec les métadonnées grâce aux API de réflexion.
Promotion immobilière constructeur
Définition
La promotion des propriétés des constructeurs simplifie la déclaration et l'initialisation des propriétés de classe dans les constructeurs.
Syntaxe
class Point {
public function __construct(
public float $x,
public float $y,
public float $z
) {}
}
Avantages
- Concision: Réduit le code passe-partout.
- Lisibilité: Rend les définitions de classe plus propres et plus lisibles.
Expression de correspondance
Définition
Le match
l'expression est similaire à switch
, mais plus puissant et concis.
Syntaxe
$result = match ($input) {
1 => 'one',
2 => 'two',
3 => 'three',
default => 'unknown',
};
Avantages
- Concision: Plus concis que
switch
. - Expression: Renvoie une valeur, contrairement à
switch
.
Opérateur Nullsafe
Définition
L'opérateur nullsafe (?->
) simplifie les vérifications nulles lors de l'accès aux propriétés ou aux méthodes.
Syntaxe
$result = $object?->property?->method();
Avantages
- Simplicité: Réduit le besoin de plusieurs vérifications nulles.
- Lisibilité: Rend le code impliquant des propriétés ou des méthodes nullables plus propre.
Améliorations de la gestion des erreurs
TypeError et ValueError
PHP 8 introduit TypeError
et ValueError
pour une meilleure gestion des erreurs. Ces exceptions facilitent la détection et la gestion de types spécifiques d'erreurs.
Avantages
- Granularité: Gestion des erreurs plus granulaire et spécifique.
- Débogage: Plus facile à identifier et à résoudre les problèmes.
Cartes faibles
Définition
Les cartes faibles permettent le stockage d'objets sans empêcher leur garbage collection.
Syntaxe
$weakMap = new WeakMap();
$weakMap[$object] = $data;
Avantages
- Gestion de la mémoire: Aide à gérer la mémoire plus efficacement en permettant la collecte des objets inutilisés.
- La flexibilité: utile pour la mise en cache et d'autres scénarios où la gestion du cycle de vie des objets est critique.
Autres nouvelles fonctionnalités et améliorations
Erreurs de type cohérentes
PHP 8 apporte plus de cohérence aux erreurs de type, rendant les problèmes liés au type plus faciles à comprendre et à résoudre.
Nouvelles fonctions de chaîne
Nouvelles fonctions de chaîne, telles que str_contains
, str_starts_with
, et str_ends_with
, offrent plus de commodité et de lisibilité.
Syntaxe améliorée
Diverses améliorations de la syntaxe, telles que les virgules de fin dans les listes de paramètres et les paramètres nommés, améliorent la lisibilité et la maintenabilité du code.
Conclusion
PHP 8 introduit une gamme de fonctionnalités et d'améliorations puissantes qui améliorent les performances, la lisibilité et la convivialité du langage. Du compilateur JIT aux arguments et attributs nommés, ces ajouts font de PHP un langage plus robuste et plus moderne, répondant aux besoins du développement Web moderne. Les développeurs sont encouragés à explorer et à exploiter ces nouvelles fonctionnalités pour écrire un code plus propre, plus efficace et plus maintenable.