ホームページ  >  記事  >  データベース  >  PHP クロージャ インスタンスの分析

PHP クロージャ インスタンスの分析

怪我咯
怪我咯オリジナル
2017-07-11 15:52:351163ブラウズ

匿名関数 (匿名関数) はクロージャとも呼ばれ、指定された名前なしで関数を一時的に作成できます。ほとんどの場合、callback function(callback) パラメーターの値として使用されます。もちろん、他のアプリケーションもあります。

匿名関数は現在、Closure クラスを通じて実装されています。

クロージャ関数は変数の値としても使用できます。 PHP は、この expression を組み込みクラス Closure の object インスタンスに自動的に変換します。クロージャ オブジェクトを変数に代入する方法は、通常の変数代入の構文と同じで、最後にセミコロンも追加されます:

クロージャは親スコープから変数を継承することができます。 このような変数は、use language 構造を使用して渡す必要があります。 PHP 7.1 以降、スーパーグローバル、$this、またはパラメーターと同じ名前を持つ変数を渡すことはできません。

具体的な形式は以下のとおりです:

$a = function($arg1, $arg2) use ($variable) { 
// 声明函数闭包到变量$a, 参数为$arg1, $arg2 ,该闭包需使用$variable变量
}

具体的な使用例は以下のとおりです:

<?php
$result = 0;
 
$one = function()
{ var_dump($result); };
 
$two = function() use ($result)
{ var_dump($result); }; // 可以认为 $two这个变量 本身记录了该函数的声明以及use使用的变量的值
 
$three = function() use (&$result)
{ var_dump($result); };
 
$result++;
 
$one();  // outputs NULL: $result is not in scope
$two();  // outputs int(0): $result was copied
$three();  // outputs int(1)
?>


以上がPHP クロージャ インスタンスの分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。