Heim  >  Artikel  >  Backend-Entwicklung  >  Anonyme Funktionen und Schließungsverwendung in PHP

Anonyme Funktionen und Schließungsverwendung in PHP

墨辰丷
墨辰丷Original
2018-05-15 14:25:211361Durchsuche

Dieser Artikel stellt hauptsächlich die Verwendung anonymer Funktionen und Schließungen in PHP vor. Ich hoffe, dass er für alle hilfreich ist.

1: Anonyme Funktionen (kann nur in PHP5.3.0 oder höher verwendet werden)

Anonyme Funktionen (Anonyme Funktionen) auch in PHP Mit sogenannten Abschlussfunktionen (closes) können Sie eine Funktion ohne Namen angeben. Am häufigsten wird der Parameterwert der Rückruffunktion verwendet. (http://php.net/manual/zh/functions.anonymous.php)

Definition der anonymen Funktion:

$closureFunc = function(){

    ....

 };

z.B : Weisen Sie die anonyme Funktion einer Variablen zu und rufen Sie sie über die Variable auf



 $closureFunc = function($str){

   echo $str;

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


Ausgabe: Hallo Welt!

2: Schließung

2.1 Fügen Sie anonyme Funktionen in gewöhnliche Funktionen ein, oder Sie können anonyme Funktionen einfügen Zurück, dies stellt einen einfachen Abschluss dar



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


2.2 Referenz lokal Variablen in anonymen Funktionen



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


Nachdem die obige Funktion ausgeführt wurde, wird ein Hinweisfehler angezeigt wird gemeldet, was darauf hinweist, dass wir auf diese Weise keine lokalen Variablen in anonymen Funktionen verwenden können. Zu diesem Zeitpunkt müssen wir ein PHP-Schlüsselwort verwenden. Der Code lautet wie folgt:



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


 2.3  返回匿名函数



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


2.4 当我们在返回匿名函数时候怎么给匿名函数传参呢? 其实跟普通函数传参数一样



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 怎么用闭包来改变上下文引用的变量值?



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

Anonyme Funktionen und Schließungsverwendung in PHP

看上面的输入结果,显然没有达到目的, 其实只要加一个 & 引用符号就可以了



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 把匿名函数当作参数传递



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

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

相关推荐:

关于JavaScript 闭包的相关知识的了解和使用

js闭包使用详解

关于Python闭包机制的深入理解

Das obige ist der detaillierte Inhalt vonAnonyme Funktionen und Schließungsverwendung 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