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

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

怪我咯
怪我咯Original
2017-06-28 11:02:371096Durchsuche

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(){

    ....

 };

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

 $closureFunc = function($str){

   echo $str;

  };  $closureFunc("hello world!");

ü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

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

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

2.3 Anonyme Funktion zurückgeben

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

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

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

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

2.6 Anonyme Funktionen als Übergabeparameter behandeln

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

callFunc(function($str){
    echo $str;
})
//输出:
// argv

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!

Stellungnahme:
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