Heim > Backend-Entwicklung > PHP-Tutorial > Detaillierte Erklärung anonymer Funktionen und Schließungen in PHP

Detaillierte Erklärung anonymer Funktionen und Schließungen in PHP

怪我咯
Freigeben: 2023-03-11 17:30:01
Original
1122 Leute haben es durchsucht

1: Anonyme Funktionen (Nur ​​in PHP 5.3.0 oder höher verfügbar)

Anonyme Funktionen in PHP, auch Abschlussfunktion genannt (schließt), ermöglicht die Angabe einer Funktion ohne Namen. Am häufigsten wird der Parameterwert der Callback-Funktion

verwendet. Definition der anonymen Funktion:

$closureFunc = function(){

    ....

 };
Nach dem Login kopieren

z. B.: Weisen Sie die anonyme Funktion der Funktion zu Variable , Aufruf

 $closureFunc = function($str){

   echo $str;

  };  $closureFunc("hello world!");
Nach dem Login kopieren

über Variablen Ausgabe: Hallo Welt!

2: Schließung

2.1 Konvertieren Sie die anonyme Funktion. Wenn Sie sie in eine gewöhnliche Funktion einfügen, kann die anonyme Funktion auch zurückgegeben werden, was einen einfachen Abschluss darstellt.

function closureFunc1(){
    $func = function(){
        echo "hello";
    };
    $func();
}
closureFunc1();
//输出: hello
Nach dem Login kopieren

2.2 In der anonymen Funktion bezieht sich auf die lokalen Variablen

function closureFunc2(){
    $num = 1;
    $func = function(){
        echo $num;
    };
    $func();
}
closureFunc2();
//Notice: Undefined variable: num
Nach dem Login kopieren

Nachdem die obige Funktion ausgeführt wurde, wird ein Hinweisfehler gemeldet, der darauf hinweist, dass wir keine lokalen Variablen in anonymen Funktionen verwenden können. Zu diesem Zeitpunkt müssen wir ein PHP zitieren Schlüsselwortverwendung, der Code lautet wie folgt

function closureFunc2(){
    $num = 1;
    $func = function() use($num){
        echo $num;
    };
    $func();
}
closureFunc2();
//输出: 1
Nach dem Login kopieren

2.3 Anonyme Funktion zurückgeben

function closureFunc3(){
    $num = 1;
    $func = function() use($num){
        echo $num;
    };
    return $func;
}
$func = closureFunc3(); //函数返回匿名函数
$func(); //然后我们在用$func() 调用
//输出: 1
Nach dem Login kopieren

2.4 Wie übergeben wir Parameter an die anonyme Funktion, wenn wir sie zurückgeben? Tatsächlich ist es dasselbe wie die Übergabe von Parametern an eine normale Funktion

function closureFunc4(){
    $num = 1;
    $func = function($str) use($num){
        echo $num;
        echo "\n";
        echo $str;
    };
    return $func;
}
$func = closureFunc4();
$func("hello, closure4");
//输出:
//1
//hello, closure4
Nach dem Login kopieren

2.5 Wie kann ich den Abschluss verwenden, um den Variablenwert zu ändern, auf den der Kontext verweist?

function closureFunc5(){
    $num = 1;
    $func = function() use($num) {
        echo "\n";
        $num++;
        echo $num;
    };
    echo "\n";
    echo $num;
    return $func;
}
$func = closureFunc5();
$func();
$func();
$func();
//输出:
// 1
// 2
// 2
// 2
Nach dem Login kopieren

Wenn man sich die obigen Eingabeergebnisse ansieht, ist es offensichtlich, dass der Zweck nicht erreicht wurde. Fügen Sie einfach ein &-Referenzsymbol hinzu

function closureFunc5(){
    $num = 2;
    $func = function() use(&$num) {
        echo "\n";
        $num++;
        echo $num;
    };
    echo "\n";
    echo $num;
    return $func;
}
$func = closureFunc5();
$func();
$func();
$func();
//输出:
// 2
// 3
// 4
// 5
Nach dem Login kopieren

2.6 Anonyme Funktionen als Übergabeparameter behandeln

function callFunc($func){
    $func("argv");
}

callFunc(function($str){
    echo $str;
})
//输出:
// argv
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung anonymer Funktionen und Schließungen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage