国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Table des matières
Quelles sont les fonctions de flèche dans PHP?
Héritage automatique de la portée: plus d' use
Comment fonctionne l'héritage de la portée dans les fonctions Arrow
Limitations et quand ne pas utiliser les fonctions flèches
Meilleures pratiques et cas d'utilisation du monde réel
1. Transformations de tableau
2. Tri avec des critères dynamiques
3. Rappels d'événements ou logique différée
Résumé
Maison développement back-end tutoriel php Fonctions de flèche dans PHP: un nouveau paradigme pour l'héritage de la portée variable

Fonctions de flèche dans PHP: un nouveau paradigme pour l'héritage de la portée variable

Jul 26, 2025 am 09:39 AM
PHP Variables Scope

Les fonctions flèches de PHP éliminent le besoin d'utiliser les mots clés en capturant automatiquement les variables de portée des parents; 2. Ils ne peuvent contenir qu'une seule expression et capturer des variables par valeur; 3. Il convient aux scénarios tels que la conversion du tableau, le tri dynamique et les rappels simples; 4. Il ne convient pas aux fonctions complexes qui nécessitent un passage de référence ou une logique multi-lignes; 5. L'utilisation des fonctions Arrow peut réduire le code du chaudron et améliorer la lisibilité du code, ce qui est un meilleur choix lorsqu'il s'agit de fermetures simples.

Fonctions de flèche dans PHP: un nouveau paradigme pour l'héritage de la portée variable

PHP a longtemps pris en charge les fonctions anonymes (fermetures), permettant aux développeurs de définir des fonctions à la volée et de les transmettre en tant que rappels. Avec PHP 8.1, une nouvelle syntaxe a été introduite: Arrow Functions 2.0 - une fa?on plus concise d'écrire des fermetures qui héritent automatiquement des variables de la portée parentale. Ce n'est pas seulement du sucre syntaxique; Il représente un changement dans la fa?on dont nous gérons la portée des variables dans les fermetures, ce qui rend le code plus propre et moins sujet aux erreurs.

Fonctions de flèche dans PHP: un nouveau paradigme pour l'héritage de la portée variable

Décomposons ce qui fait de la flèche de PHP un nouveau paradigme pour l'héritage de la portée variable.


Quelles sont les fonctions de flèche dans PHP?

Les fonctions de flèche, introduites dans PHP 7.4 et améliorées en PHP 8.1, fournissent une syntaxe raccourci pour écrire de courtes fonctions anonymes. Ils utilisent le mot-clé fn et la syntaxe "flèche" ( => ):

Fonctions de flèche dans PHP: un nouveau paradigme pour l'héritage de la portée variable
 $ multiplicateur = 2;
$ nombres = array_map (fn ($ n) => $ n * $ multiplicateur, [1, 2, 3, 4]);

Cela équivaut à la syntaxe de fermeture plus longue:

 $ multiplicateur = 2;
$ nombres = array_map (fonction ($ n) use ($ multiplicateur) {
    retourner $ n * $ multiplicateur;
}, [1, 2, 3, 4]);

La principale différence? Héritage variable automatique.

Fonctions de flèche dans PHP: un nouveau paradigme pour l'héritage de la portée variable

Héritage automatique de la portée: plus d' use

Avant les fonctions de flèche, si vous vouliez accéder à une variable à partir de la portée des parents à l'intérieur d'une fermeture, vous deviez l'importer explicitement à l'aide du mot-clé use :

 fonction getDiscountEdPrices ($ items, $ remise) {
    return array_map (fonction ($ price) use ($ recount) {
        Retour $ Price * (1 - $ Discount);
    }, $ items);
}

Oublier use conduit à des erreurs variables non définies. Il est facile de manquer, surtout dans la logique imbriquée.

Avec les fonctions de flèche, toutes les variables référencées à l'intérieur de la fonction sont automatiquement capturées à partir de la portée extérieure par valeur :

 fonction getDiscountEdPrices ($ items, $ remise) {
    return array_map (fn ($ prix) => $ prix * (1 - $ remise), $ items);
}

Aucune use , pas d'erreurs. La variable $discount est capturée implicitement.


Comment fonctionne l'héritage de la portée dans les fonctions Arrow

Les fonctions de flèche suivent des règles spécifiques pour la portée variable:

  • Seules les variables utilisées dans la fonction de flèche sont capturées.
  • La capture est par valeur, pas par référence.
  • Seules les variables de la portée des parents immédiates sont disponibles.
  • $ Ceci est conservé s'il est défini dans la portée des parents.

Par exemple:

 Classe Product {
    Taxe de $ privé = 0,1;

    Fonction publique CalculePrices ($ Prix) {
        retour array_map (fn ($ prix) => $ prix * (1 $ this-> tax), $ prix);
    }
}

Ici, $this est disponible à l'intérieur de la fonction de flèche car il est dans la portée où la fonction de flèche est définie. Vous n'avez pas besoin d' use ($this) ou de vous soucier de la liaison.

Mais si vous essayez d'accéder à une variable non pas dans la portée:

 fn ($ x) => $ x * $ inconnuvar // erreur fatale si $ inconnu n'existe pas

Il se comporte comme tout accès variable normal - se fait non défini.


Limitations et quand ne pas utiliser les fonctions flèches

Bien que pratique, les fonctions de flèche ne remplacent pas toutes les fermetures. Ils ont des contraintes:

  • Expression unique uniquement : le corps doit être une expression unique (pas de plusieurs instructions).
  • Aucune instruction de retour : l'expression est automatiquement renvoyée.
  • Impossible de capturer les variables par référence : vous ne pouvez pas modifier directement les variables extérieures.
  • Moins lisible pour une logique complexe : gardez-les court et simples.

Donc cela ne fonctionnera pas:

 fn ($ x) => {
    Echo "Traitement $ x \ n";
    retourner $ x * 2;
}

Vous avez besoin d'une fermeture complète pour la logique multi-lignes.

De plus, si vous avez besoin de passer des variables par référence:

 $ facteur = 2;
$ double = fonction (& $ valeur) use (& $ factor) {
    $ valeur * = $ facteur;
};

Les fonctions Arrow ne peuvent pas le faire - la capacité est toujours par valeur.


Meilleures pratiques et cas d'utilisation du monde réel

Les fonctions de flèche brillent dans les modèles de programmation fonctionnelle:

1. Transformations de tableau

 $ users = array_filter ($ utilisateurs, fn ($ user) => $ user-> isActive ());
$ names = array_map (fn ($ user) => $ user-> name, $ utilisateurs);

2. Tri avec des critères dynamiques

 $ sortby = 'age';
USORT ($ People, fn ($ a, $ b) => $ a -> $ sortby <=> $ b -> $ sortby);

3. Rappels d'événements ou logique différée

 $ logger = new logger ();
$ onSave = fn ($ disques) => $ logger-> info ("enregistré:". $ enregistre-> id);

Ils réduisent le chauffeur et rendent l'intention plus claire, en particulier lorsque la logique est triviale.


Résumé

Les fonctions de flèche de PHP représentent une évolution subtile mais significative dans la fa?on dont les fermetures interagissent avec la portée variable. En capturant automatiquement les variables utilisées de la portée des parents, ils éliminent le besoin de certificats use verbeux, réduisent les bogues et encouragent le code plus propre et plus expressif.

Ils ne sont pas pour toutes les situations, mais lorsqu'ils sont utilisés de manière appropriée, en particulier pour les rappels courts et apatrides - ils rendent le code plus lisible et maintenu.

Fondamentalement: si votre fermeture est une seule ligne qui utilise des variables de l'extérieur, atteignez fn() => . Ce n'est pas seulement plus court - il est plus intelligent à propos de la portée.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

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?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Sujets chauds

Tutoriel PHP
1502
276
La portée omniprésente: un guide pratique des superglobals de PHP La portée omniprésente: un guide pratique des superglobals de PHP Jul 26, 2025 am 09:47 AM

Les variables hyperglobales de PHP sont toujours disponibles des tableaux intégrés utilisés pour traiter les données de demande, gérer l'état et obtenir des informations de serveur; 1. Lorsque vous utilisez $ _get, les paramètres d'URL doivent être convertis et vérifiés; 2. Lors de la réception de données de formulaire via $ _post, le filtrage doit être effectué avec filter_input (); 3. évitez d'utiliser $ _Request pour éviter les vulnérabilités de sécurité; 4. $ _Session doit appeler session_start () et se connecter pour réinitialiser l'ID de session; 5. Lors de la définition de $ _cookie, activez les attributs sécurisés, httponly et samesite; 6. Les informations de $ _Server ne peuvent pas être entièrement fiables et ne peuvent pas être utilisées pour la vérification de la sécurité; 7. $ _ env.

Navigation des limites: une plongée profonde dans la portée locale et mondiale Navigation des limites: une plongée profonde dans la portée locale et mondiale Jul 26, 2025 am 09:38 AM

TheDiFferenceBetweenLocalandGlobalscopeliesInwhereVariblesAredEclaredAndAccessible: GlobalVariblesAredEfinedoutsidefunctions et accessible à l'endroit où

Ma?triser la portée lexicale: le mot-clé ?utilisation? et les fonctions anonymes PHP Ma?triser la portée lexicale: le mot-clé ?utilisation? et les fonctions anonymes PHP Jul 25, 2025 am 11:05 AM

Dans PHP, si vous souhaitez utiliser des variables externes dans les fonctions anonymes, vous devez les importer explicitement via le mot clé Utiliser; 1. L'utilisation est utilisée pour introduire des variables externes dans la portée lexicale de la fermeture; 2. Passer les variables par défaut par valeur, et les passer par référence avec & $ var syntaxe; 3. Plusieurs variables peuvent être importées, séparées par des virgules; 4. La valeur de la variable est capturée lorsque la fermeture est définie, et non lorsqu'elle est exécutée; 5. Chaque itération de la boucle crée une copie de fermeture indépendante pour s'assurer que la valeur de la variable est correctement capturée; Par conséquent, l'utilisation est un mécanisme clé pour réaliser l'interaction entre la fermeture et l'environnement externe, ce qui rend le code plus flexible et contr?lable.

L'ordre de résolution de la portée: comment PHP trouve vos variables L'ordre de résolution de la portée: comment PHP trouve vos variables Jul 25, 2025 pm 12:14 PM

PHPresolvesvariablesinaspecificorder:1.Localscopewithinthecurrentfunction,2.Functionparameters,3.Variablesimportedviauseinclosures,4.Globalscopeonlyifexplicitlydeclaredwithglobaloraccessedthrough$GLOBALS,5.Superglobalslike$_SESSIONand$_POSTwhichareal

Démystifier l'accès global: mot-clé `` global 'par rapport au tableau' $ globals ' Démystifier l'accès global: mot-clé `` global 'par rapport au tableau' $ globals ' Jul 25, 2025 am 05:27 AM

ThetwomaintoolsforaccessingglobalvariablesInphParetheglobalKeyword et $ GlobalSupergloBalArray; 1) theglobalkeyword-areesareférencetoaglobalvariableIndeafonction

Pourquoi vos variables disparaissent: un guide pratique des énigmes de portée Pourquoi vos variables disparaissent: un guide pratique des énigmes de portée Jul 24, 2025 pm 07:37 PM

VariablesDisappardetoscoperules - Whhereety’redeclareddetermins devenant un canapé-access

Implications de la portée des générateurs et du mot-clé ?rendement? Implications de la portée des générateurs et du mot-clé ?rendement? Jul 25, 2025 am 04:45 AM

Les fonctions utilisant le rendement deviendront des générateurs, et lorsqu'ils sont appelés, ils renvoient l'objet générateur au lieu d'être exécutés immédiatement; 2. Les variables locales du générateur ne seront pas détruites pendant la pause de rendement, mais continueront d'exister avec le cadre du générateur tant que le générateur n'est pas épuisé ou fermé; 3. Le cycle de vie variable étendu peut entra?ner une augmentation de l'utilisation de la mémoire, en particulier lors de la référence à de grands objets; 4. Lorsqu'ils sont combinés avec des fermetures, les règles LEGB sont toujours suivies, mais le problème de fin de la fin des variables de boucle doit être résolu par la liaison immédiatement (comme la valeur paramètre par défaut); 5. .Close () doit être appelé explicitement pour garantir que l'exécution de blocage est finalement effectuée pour éviter les retards dans le nettoyage des ressources. Le générateur affecte la mémoire et le comportement en étendant le temps de survie des variables, mais ne modifie pas les règles de portée lexicales.

Le mot-clé ?global?: une épée à double tranchant dans la gestion de la portée PHP Le mot-clé ?global?: une épée à double tranchant dans la gestion de la portée PHP Jul 25, 2025 pm 05:37 PM

Theglobalkeywordinphpallowsfunctionstoaccessvariablesfromtheglobalscope, mais la réusie de la carrosserie

See all articles