Le type Never Return dans PHP 8.1 indique qu'une fonction ne renverra pas de contr?le à l'appelant du tout. 1. Il est utilisé lorsqu'une fonction lance une exception non revêtue, appelle exit () ou die (), entre une boucle infinie ou transfère en permanence le contr?le ailleurs. 2. Les utilisations pratiques incluent les fonctions d'assistance d'erreur qui arrêtent l'exécution, la redirection des fonctions qui sortent après l'envoi d'en-têtes et les vérifications exhaustives d'expression de correspondance. 3. Les avantages incluent une meilleure clarté de code, une analyse statique améliorée et une logique plus s?re en veillant à ce que aucun code ne s'exécute par erreur après un appel de never fonction. 4. Les mises en garde incluent uniquement son utilisation limitée pour retourner les types, l'incompatibilité potentielle avec les versions PHP plus anciennes et la surutilisation de la surutilisation dans les scénarios de retour conditionnellement.
Lorsque PHP 8.1 a introduit le type never
Return, il a ajouté une nouvelle fa?on de signaler qu'une fonction ne renvoie pas seulement vide - elle ne revient jamais du tout. Cela peut sembler un peu abstrait au début, mais il a des utilisations pratiques, en particulier lorsqu'il s'agit de fonctions qui lancent des exceptions, quittent le script ou terminent autrement l'exécution.
Qu'est-ce qui ne signifie never
réellement?
Le type never
Return indique qu'une fonction ne rendra en aucun cas le contr?le à l'appelant. Cela signifie:
- La fonction lance une exception (et ne l'attrape pas).
- Il appelle
exit()
oudie()
. - Il se heurte à une boucle infinie qui ne sort jamais (bien que cela soit moins courant et plus dans un cas de bord).
- Il transfère en quelque sorte le contr?le ailleurs en permanence.
Donc, si vous voyez une fonction déclarée avec function foo(): never
, elle dit essentiellement: "Une fois que vous appelez cela, ne vous attendez pas à ce qu'il s'exécute dans ce contexte."
Ceci est différent de void
, ce qui dit simplement: ?Cette fonction ne renvoie pas de valeur?, mais permet toujours à l'exécution de continuer par la suite.
Où dois-je utiliser never
?
Il existe des scénarios spécifiques où l'utilisation ne rend never
votre code plus clair et plus s?r. Voici quelques exemples pratiques:
-
Aiders d'erreur : fonctions qui lancent des exceptions destinées à arrêter l'exécution ultérieure.
Fonction Fail (String $ message): jamais { lancer une nouvelle exception ($ message); }
Redirection qui sorte : lors de la redirection des utilisateurs dans les applications Web, vous voulez souvent vous assurer qu'aucun autre code ne fonctionne après la redirection.
redirection de fonction (String $ url): jamais { En-tête ("Emplacement: $ url"); sortie(); }
Match Expressions avec des contr?les exhaustifs : en combinaison avec
match()
, ne peutnever
aider à appliquer l'exhaustivité.
L'utilisation des analyseurs et des IDE statiques ne comprennent never
mieux vos intentions, attrapant des bugs plus t?t.
Avantages de l'utilisation never
Utiliser never
ne n'est pas seulement une précision - elle apporte également de réels avantages:
- Meilleure clarté de code : d'autres développeurs peuvent immédiatement dire que l'appel d'une telle fonction met fin à l'écoulement d'exécution.
- Prise en charge de l'outillage amélioré : les outils d'analyse statique comme le psaume ou le phpstan peuvent vous avertir si vous essayez de faire quelque chose après un appel de
never
fonction. - Logique plus s?re : vous évitez les cas où le code continue par erreur après un point qu'il ne devrait pas.
Par exemple, si vous écrivez:
Fonction valider (int $ valeur): void { if ($ valeur <0) { fail (?valeur négative?); } // ... Continuez en toute sécurité }
L'analyseur sait maintenant que fail()
ne reviendra pas, il traite donc le reste de la fonction comme accessible uniquement lorsque $value >= 0
.
Quelques gotchas et notes
Bien que never
est puissant, il y a quelques choses à garder à l'esprit:
-
never
être utilisé pour les types de retour, pas les paramètres ou les propriétés. - Il n'est pas compatible avec l'héritage dans un environnement de version mixte - les versions plus anciennes de PHP lanceront des erreurs de syntaxe si elles le rencontrent.
- Ne le dépassez pas pour les fonctions qui sortent généralement mais qui peuvent revenir parfois en fonction des conditions.
N'oubliez pas non never
que ne pas empêcher le code d'être écrit après un appel - cela signale simplement qu'un tel code ne devrait pas s'attendre à s'exécuter. Donc, si vous avez:
rediriger ('/ home'); écho ?Cette ligne ne s'exécutera jamais?;
Votre IDE ou analyseur statique peut signaler cette ligne en écho comme inaccessible.
C'est essentiellement ce qui never
dans PHP 8.1. C'est un petit ajout qui rend certains modèles plus propres et plus expressifs, en particulier lorsqu'ils traitent de la finalité dans le comportement de la fonction.
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)

La fonction d'énumération dans PHP8.1 améliore la clarté et la sécurité du type du code en définissant les constantes nommées. 1) Les énumérations peuvent être des entiers, des cha?nes ou des objets, améliorant la lisibilité du code et la sécurité des types. 2) L'énumération est basée sur la classe et prend en charge des fonctionnalités orientées objet telles que la traversée et la réflexion. 3) L'énumération peut être utilisée pour la comparaison et l'attribution pour assurer la sécurité du type. 4) L'énumération prend en charge l'ajout de méthodes pour implémenter une logique complexe. 5) La vérification stricte et la gestion des erreurs peuvent éviter les erreurs courantes. 6) L'énumération réduit la valeur magique et améliore la maintenabilité, mais prêtez attention à l'optimisation des performances.

Les fibres ont été introduites dans PHP8.1, améliorant les capacités de traitement simultanées. 1) Les fibres sont un modèle de concurrence léger similaire aux coroutines. 2) Ils permettent aux développeurs de contr?ler manuellement le flux d'exécution des taches et conviennent à la gestion des taches à forte intensité d'E / O. 3) L'utilisation des fibres peut écrire du code plus efficace et réactif.

PHP8.1Introduits de la lecture de la lecture destiné à ImplifyCreatingImmutable.

EnumSinphp8.1 ImprovecodeClarityAndrenForceTypeaSafetyDefiningaFixeSetSedValues.1) EnumSbundlelatedValuesInToAsingLetType, réduisant les éreintes

PHP8.1 introduit des attributs en lecture seule pour déclarer les attributs de classe qui ne peuvent pas être modifiés après l'initialisation. Les développeurs peuvent initialiser les attributs en lecture seule lorsque les constructeurs ou les déclarations, et ne peuvent pas être modifiés par la suite. Cela s'applique aux scénarios où l'intégrité des données est requise, telles que les entités, les DTO et les valeurs de configuration. Remarque Lorsque vous utilisez: les attributs en lecture seule ne peuvent pas être attribués à l'extérieur du constructeur, ne peuvent pas être utilisés avec des modificateurs VAR ou non accessibles et empêcher uniquement la réaffectation de tableaux ou d'objets, et n'empêchent pas les changements d'état interne. Pas adapté aux scénarios où des mises à jour fréquentes d'attributs ou de scénarios sensibles aux performances sont nécessaires. Les usages communs comprennent: 1) l'ID de l'entité dans la conception axée sur le domaine; 2) objets de transmission de données qui répondent par l'API; 3) éléments de configuration qui ne doivent pas être modifiés après le chargement. Les limitations comprennent: 1) pas de réaffectation après la construction; 2) La clé VAR n'est pas prise en charge.

ENUMSINPHP8.1 fournit un moyen natif de définir les collections de valeur nommées, d'améliorer la lisibilité du code et la sécurité des types. 1. Utilisez la définition du mot-clé Enum pour soutenir les valeurs scalaires associatives (telles que les cha?nes ou les entiers) ou les enums purs; 2. Les énumérations ont des contr?les de type pour éviter que les valeurs illégales soient passées; 3. Fournir des cas () pour obtenir toutes les options, TryFrom () convertit en toute sécurité la valeur d'origine en une instance d'énumération; 4. Il ne prend pas en charge l'héritage ou l'instanciation directe et ne fait attention à la conversion manuelle lors de l'interaction avec la base de données / API; 5. Applicable aux collections de valeurs fixes, il n'est pas recommandé d'utiliser des valeurs fréquemment modifiées. Par rapport à l'ancienne version de la méthode d'énumération de simulation constante, l'énumération PHP8.1 réduit la logique redondante et améliore la clarté de la structure du code.

PHP8.1Introduit les fibres de la consommation de consommation de la consommation parallowingsynchronous-styleasynchronouscodeeexecution.fibersareUserland-managedmini-threadsthatcanPause (viafiber :: suspendre ()) anmersumeeXecution.

TheereverreturnTypeinphp8.1IndicatesthatafonctionwwillNoTreturnControltotheCalleratall.1.iTUsesedHenaFonctionnementthrowsannuncaughtexception, CallSexit () orie (), en entrepactation
