


Quelles sont les nouvelles fonctionnalités de PHP 8 (8.0, 8.1, 8.2, 8.3)?
Jun 28, 2025 am 02:13 AMLes versions PHP 8.0 à 8.3 introduisent un certain nombre de nouvelles fonctionnalités pour améliorer les capacités linguistiques. 1. PHP 8.1 prend en charge les types d'union, permettant des paramètres de fonction ou des valeurs de retour pour déclarer plusieurs types, tels que int | float; 2. Introduire des attributs et des classes en lecture seule pour assurer l'immuabilité après initialisation; 3. Ajouter des types d'énumération pour réduire l'utilisation des cha?nes magiques; 4. Soutenir la syntaxe appelée citoyenne de première classe pour simplifier la programmation fonctionnelle; 5. Introduire des fibres pour mettre en ?uvre le multitache collaboratif; 6. Ajouter un type de retour Never Retour, indiquant clairement que la fonction ne revient pas; 7. PHP 8.0 a ajouté la fonction STR_CONTAINS () pour améliorer la lisibilité du jugement de la cha?ne; 8. Présentez les expressions de correspondance pour remplacer les instructions de commutation pour la rendre plus concise et plus s?re; 9. Les attributs du constructeur s'améliorent et réduisent le code du chaudron; 10. Chaque version optimise en continu les performances pour améliorer la vitesse d'exécution et l'efficacité de la mémoire.
PHP a évolué régulièrement, et depuis la sortie de PHP 8.0 à la fin de 2020, chaque version mineure (8.1, 8.2 et maintenant 8.3) a apporté des fonctionnalités utiles, des améliorations des performances et une meilleure ergonomie des développeurs. Si vous maintenez ou construisez des applications PHP modernes, cela vaut la peine de savoir ce qui est nouveau dans ces versions - surtout si vous envisagez de mettre à niveau.
Types syndicaux (PHP 8.1)
L'un des ajouts les plus percutants de PHP 8.1 est les types d'union . Avant cela, si une fonction pouvait accepter plusieurs types, vous deviez compter sur DocBlocks ou simplement utiliser mixed
. Maintenant, vous pouvez déclarer explicitement qu'un paramètre ou une valeur de retour prend en charge plusieurs types directement dans la signature de la fonction.
Exemple:
function setLength (int | float $ longueur): void { // ... }
Cela contribue à la clarté du code et permet aux analyseurs et IDE statiques de prendre des problèmes plus t?t. Il joue également bien avec les frameworks et outils de type type.
Remarque: il y a aussi un
|
Syntaxe pour séparer les types etnull
peut être inclus commestring|null
.
Propriétés et classes en lecture (PHP 8.1 et 8.2)
PHP 8.1 a introduit des propriétés en lecture , qui empêchent la mutation de propriété après initialisation. C'est idéal pour les structures de données immuables:
classe utilisateur { fonction publique __construct ( Public ReadOnly String $ Name, Public ReadOnly Int $ id ) {} }
Dans PHP 8.2, cela a été étendu aux classes de lecture , où toutes les propriétés sont implicitement lues:
LEADONLY CLASSE User { fonction publique __construct ( Nom de cha?ne publique, nom, public int $ id ) {} }
Ces fonctionnalités aident à appliquer l'immuabilité sans code passerelle, ce qui rend les modèles plus s?rs et plus faciles à raisonner.
Enum (PHP 8.1)
Les énumérations sont l'une de ces fonctionnalités qui rendent votre code plus propre lorsque vous traitez avec des ensembles fixes de valeurs. PHP 8.1 a ajouté des énumérations soutenues et pures .
Exemple d'une énumération soutenue:
Enum Status: String { Case Draft = 'Draft'; cas publié = ?publié?; }
Vous pouvez accéder à la valeur via Status::DRAFT->value
, et même correspondre aux cas. Les énumérements purs n'ont pas de valeurs de support et sont plus utilisés comme constantes symboliques.
Les énumérements réduisent les cha?nes magiques dans votre base de code et permettent une meilleure validation et une meilleure assurance automatique dans les IDE.
Syntaxe appelable de première classe (PHP 8.1)
Cette fonctionnalité simplifie la fa?on dont vous passez les fonctions comme appels. Au lieu d'écrire:
array_map (fn ($ x) => strlen ($ x), $ arr);
Maintenant, vous pouvez écrire:
array_map (strlen (...), $ arr);
Dans les coulisses, il convertit strlen(...)
en fermeture. Cela rend le nettoyant de programmation de style fonctionnel et moins verbeux, en particulier lorsque les opérations de cha?nage.
Support des fibres (PHP 8.1)
Les fibres permettent un multitache coopérative , qui ouvre la porte aux modèles de programmation asynchrammes en PHP. Alors que PHP suit traditionnellement un modèle synchrone de demande de demande, Fibers fournit une base pour les futurs cadres axés sur les événements.
Ils ne sont pas encore largement utilisés dans la plupart des applications, mais ils sont une amélioration importante sous le capuchon qui peut fa?onner le comportement des scripts PHP à l'avenir.
Ne jamais retourner type (PHP 8.1)
Le type never
Return indique qu'une fonction ne revient pas non plus car elle lance une exception ou termine l'exécution.
Exemple:
redirection de fonction (String $ url): jamais { En-tête ("Emplacement: $ url"); sortie(); }
Cela aide les outils d'analyse statique à mieux comprendre votre intention et à éviter les faux positifs dans l'inspection du code.
Nouvelle fonction str_contains()
(php 8.0)
Avant PHP 8.0, vérifier si une cha?ne contient une autre cha?ne requise à l'aide de strpos()
et en comparant false
. Maintenant, il y a une aide intégrée propre:
if (str_contains ('Hello World', 'World')) { // vrai }
Il est petit mais améliore la lisibilité et réduit les bugs des comparaisons incorrectes.
Faire correspondre les expressions (PHP 8.0)
Les expressions de correspondance sont comme des instructions de commutation améliorées. Ils renvoient une valeur et font automatiquement des comparaisons strictes.
Exemple:
$ status = correspond ($ code) { 200 => 'ok', 404 => 'non trouvé', par défaut => 'inconnu' };
Il est plus court qu'un interrupteur traditionnel et évite les pièges courants comme les instructions break
manquantes.
Promotion de propriété du constructeur (PHP 8.0)
Cela réduit la buissier debout dans les classes en vous permettant de définir et d'attribuer des propriétés directement dans le constructeur:
Point de classe { fonction publique __construct ( Float public $ x, Float public $ y, Float privé $ z ) {} }
Pas besoin de déclarer séparément les propriétés et de les attribuer - cela se fait en une seule étape.
Améliorations des performances
Chaque nouvelle version PHP 8 comprend des optimisations qui améliorent la vitesse et réduisent l'utilisation de la mémoire. Par exemple, PHP 8.1 a vu des améliorations dans la manipulation du tableau et les appels de fonction interne, tandis que PHP 8.2 a optimisé la compilation JIT. Vous pouvez voir jusqu'à 10 à 20% de gains de performance sur les versions PHP 7.x plus anciennes en fonction de votre charge de travail.
Si vous exécutez des versions PHP plus anciennes, la simple mise à niveau vers 8.x peut donner une augmentation notable des performances - en particulier pour les applications à fort trafic.
C'est un large aper?u de ce qui est nouveau dans PHP 8.0 à 8.3. Ces changements ne sont pas flashy, mais ils rendent l'écriture et le maintien du code PHP plus lisse et plus s?r. Qu'il s'agisse d'une meilleure saisie, d'une syntaxe plus propre ou d'un comportement d'exécution amélioré, les mises à jour s'ajoutent à un langage plus moderne et capable.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Les problèmes et les solutions courants pour la portée de la variable PHP incluent: 1. La variable globale ne peut pas être accessible dans la fonction, et elle doit être transmise en utilisant le mot-clé ou le paramètre global; 2. La variable statique est déclarée avec statique, et elle n'est initialisée qu'une seule fois et la valeur est maintenue entre plusieurs appels; 3. Des variables hyperglobales telles que $ _get et $ _post peuvent être utilisées directement dans n'importe quelle portée, mais vous devez faire attention au filtrage s?r; 4. Les fonctions anonymes doivent introduire des variables de portée parents via le mot clé Utiliser, et lorsque vous modifiez les variables externes, vous devez passer une référence. La ma?trise de ces règles peut aider à éviter les erreurs et à améliorer la stabilité du code.

Pour gérer en toute sécurité les téléchargements de fichiers PHP, vous devez vérifier la source et taper, contr?ler le nom et le chemin du fichier, définir les restrictions du serveur et traiter les fichiers multimédias deux fois. 1. Vérifiez la source de téléchargement pour empêcher le CSRF via le jeton et détecter le type de mime réel via FINFO_FILE en utilisant le contr?le de liste blanche; 2. Renommez le fichier à une cha?ne aléatoire et déterminez l'extension pour la stocker dans un répertoire non Web en fonction du type de détection; 3. La configuration PHP limite la taille de téléchargement et le répertoire temporaire Nginx / Apache interdit l'accès au répertoire de téléchargement; 4. La bibliothèque GD résait les images pour effacer des données malveillantes potentielles.

Il existe trois méthodes courantes pour le code de commentaire PHP: 1. Utiliser // ou # pour bloquer une ligne de code, et il est recommandé d'utiliser //; 2. Utiliser /.../ pour envelopper des blocs de code avec plusieurs lignes, qui ne peuvent pas être imbriquées mais peuvent être croisées; 3. Compétences combinées Commentaires tels que l'utilisation / if () {} / pour contr?ler les blocs logiques, ou pour améliorer l'efficacité avec les touches de raccourci de l'éditeur, vous devez prêter attention aux symboles de fermeture et éviter les nidification lorsque vous les utilisez.

La clé pour rédiger des commentaires PHP est de clarifier l'objectif et les spécifications. Les commentaires devraient expliquer "pourquoi" plut?t que "ce qui a été fait", en évitant la redondance ou trop de simplicité. 1. Utilisez un format unifié, tel que DocBlock (/ * /) pour les descriptions de classe et de méthode afin d'améliorer la lisibilité et la compatibilité des outils; 2. Soulignez les raisons de la logique, telles que pourquoi les sauts JS doivent être sortis manuellement; 3. Ajoutez une description d'une vue d'ensemble avant le code complexe, décrivez le processus dans les étapes et aidez à comprendre l'idée globale; 4. Utilisez TODO et FIXME Rationalement pour marquer des éléments et des problèmes de taches pour faciliter le suivi et la collaboration ultérieurs. De bonnes annotations peuvent réduire les co?ts de communication et améliorer l'efficacité de la maintenance du code.

AgeneratorInphpisamemory-EfficientwaytoterateOrgedatasetsByyieldingValuesonEatatimeIntedofreturningThemallAtonce.1.GeneratorsUsEtheieldKeywordToproduceValuesondemand, ReducingMemoryUsage.2.TheyAreusefulForHandlingBigloops, ReadingLargeFiles, OR OR.

Toléarnphpeffective, startBySettingUpAlocalServerERironmentUsingToolsLILYXAMPPANDACODEDITERLIGHILLEVSCODE.1) INSTRUSITIONXAMPFORAPACHE, MYSQL, ANDPHP.2) USACODEDEDITORFORSYNTAXSUPPORT.3)

En PHP, vous pouvez utiliser des crochets ou des accolades bouclées pour obtenir des caractères d'index spécifiques à la cha?ne, mais les crochets sont recommandés; L'index commence à partir de 0 et l'accès à l'extérieur de la plage renvoie une valeur nulle et ne peut pas se voir attribuer une valeur; MB_substr est nécessaire pour gérer les caractères multi-octets. Par exemple: $ str = "Hello"; echo $ str [0]; sortie h; et les caractères chinois tels que MB_substr ($ str, 1,1) doivent obtenir le résultat correct; Dans les applications réelles, la longueur de la cha?ne doit être vérifiée avant le boucle, les cha?nes dynamiques doivent être vérifiées pour la validité et les projets multilingues recommandent d'utiliser des fonctions de sécurité multi-octets uniformément.

Toinstallphpquickly, usexAmpPonWindowsorHomebrewonMacos.1.onwindows, downloadAndInstallxAmppp, selectComponents, startapache et placefilesInhtdocs.2.
