Qu'est-ce qu'une fonction de fermeture ? Quel est le rôle de la fonction de fermeture ? (avec code)

慕斯
Libérer: 2023-03-10 12:24:01
original
2359 Les gens l'ont consulté

L'article précédent vous a présenté "Qu'est-ce qu'une fonction anonyme en PHP ? En quoi est-ce différent des fonctions ordinaires ? (Explication détaillée et exemples) 》, cet article continue de vous présenter qu'est-ce qu'une fonction de fermeture ? Quel est le rôle de la fonction de fermeture ? (Code ci-joint) Les amis dans le besoin peuvent s'y référer. J'espère que cela sera utile à tout le monde.

Qu'est-ce qu'une fonction de fermeture ? Quel est le rôle de la fonction de fermeture ? (avec code)

Qu'est-ce qu'une fonction de fermeture :

Utilisez la variable de la fonction parent à l'intérieur de la fonction enfant via le mot-clé use, ceci genre La méthode est une fonction de fermeture

format :

function 父函数(){
//父函数的局部变量
$var-值
//声明廬名函数并且使用use格式实现闭包
变量- function() use(父元素变量){
};
}
Copier après la connexion

Les fonctions anonymes que nous avons apprises et les fonctions de fermeture que nous voulons apprendre aujourd'hui ne sont pas beaucoup utilisées lorsque nous écrivons habituellement du code. apparaîtra lors de l’écriture du framework.

Plus précisément, prenons le code comme exemple pour discuter :

<?php
/******* 闭包函数************/
//定义一个变量
  $pph = &#39; 这是页面及的变量&#39;;
  function father1(){
//父函数的一个局部变量
  $pph = &#39;不想上班&#39; ;
  function son1( ){
           global $pph;
           echo $pph;
}
    son();
}
    father1();
?>
Copier après la connexion

Analyse du code :

Tout d'abord, nous définissons toujours une variable $pph (la page et la variable), Définissez ensuite une variable locale de la fonction parent [fonction père()]. À ce stade, nous avons des variables internes et externes, nous produisons (echo) $pph, que le résultat de sortie soit la classe parent ou. le niveau de la page ? Lorsque nous avons exécuté les résultats, nous avons constaté que les résultats de sortie étaient au niveau de la page (le code est présenté ci-dessous). Par conséquent, nous avons conclu qu'une fois qu'une variable globale est appelée, elle ne peut générer que des variables de page, mais pas de variables de classe parent.

Quest-ce quune fonction de fermeture ? Quel est le rôle de la fonction de fermeture ? (avec code)

Lorsque nous l'écrivons en tant que fonction anonyme, nous pouvons utiliser les variables de l'élément parent. Nous devons utiliser le mot-clé use, mais lorsque nous l'exécuterons, nous le ferons. trouver un message d'erreur

Le code est le suivant :

function father(){
        $pph = &#39;不想上班&#39;;
        function son() use($pph){
        echio $pph;
        }
        son();
        }
        father();
Copier après la connexion

Le résultat d'exécution est le suivant :

Quest-ce quune fonction de fermeture ? Quel est le rôle de la fonction de fermeture ? (avec code)

Par conséquent, c'est faux et ne peut pas être implémenté ;

Utiliser des fonctions anonymes pour implémenter des fermetures

     function father(){
            $pph = &#39;不想上班&#39;;
            $son = function () use($pph){
            echo $pph;
            };
            //调用内部函数
            $son();
            }
            father();
Copier après la connexion

Apprentissage recommandé : "Tutoriel vidéo PHP"

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!