PHP関数における匿名関数とクロージャの実装の詳細な説明

伊谢尔伦
リリース: 2023-03-07 19:12:01
オリジナル
2922 人が閲覧しました

php はコールバック関数をサポートしています。これは、他の高級言語と比較してより多くのポイントを追加する機能です。ただし、php5.3 より前のコールバック関数の使用は、JavaScript に比べて柔軟性が低く、文字列 の関数名と create_function の戻り値 の 2 つのオプションしかありません。 php5.3 以降には、別のオプションがあります - 匿名関数クロージャー関数 (クロージャー) とも呼ばれ、指定された名前なしで関数を一時的に作成でき、コールバック関数としてよく使用されます。パラメーターの値。もちろん、他のアプリケーションもあります。前の章では、php コールバック関数の詳細な使用法を詳しく紹介しました。この章では、php の匿名関数またはクロージャ カスタム関数について説明します。 ここでは、匿名またはクロージャのカスタム関数の例を示し、カスタム関数を宣言し、名前のない関数を変数に割り当てます。変数の直後にかっこを追加し、パラメータを渡して無名関数を呼び出して出力します。

匿名関数のサンプルコードは以下の通りです:

<?php
/** 匿名或者闭包函数实例 */
 $fun = function($a){
   echo $a;             //将一个没有名字的函数赋值给一个变量$fun
 };
 $fun("php.cn");        //变量后加括号并传参数,调出匿名函数并输出
?>
ログイン後にコピー
匿名関数は変数の値としても使用できます。匿名関数をパラメータとしてコールバック関数に直接渡すのが、匿名関数の最も一般的な使用方法であり、最終的にはセミコロンを追加するのを忘れます。

コールバック関数を呼び出すときに匿名関数をパラメータとして受け取るコード例は次のとおりです:

<?php
/** 申明函数callback,需要传递一个匿名函数作为参数 */
function callback($back){
 echo $back();             //参数只有是一个函数时才能在这里调用
}
callback(function(){        //调用函数的同时直接传入一个匿名函数
 echo "闭包数据";
});
?>
ログイン後にコピー
クロージャの重要な概念は、外部変数を内部関数で使用できるということであり、クロージャは接続される必要があるということです。キーワード use を通して

関数と外部変数は、関数またはクラスの先頭で宣言する必要があります。クロージャ関数は親スコープから変数を継承します。これは、グローバル変数を使用する場合とは異なります。グローバル変数は、現在どの関数が実行されているかに関係なく、フルスコープに存在します。クロージャの親スコープはクロージャ関数を定義しますが、必ずしもそれを呼び出す関数を定義するわけではありません。

以下では、関数を宣言し、匿名関数をパラメータとして渡すクロージャの例も示します。ここでのパラメータは、関数の場合にのみ呼び出すことができます。キーワード。関数を呼び出すときに、匿名関数を直接渡します。

キーワード use を使用するコードは次のとおりです:

<?php
/** 申明函数callback,需要传递一个匿名函数作为参数 */
function callback($back){
 echo $back();             //参数只有是一个函数时才能在这里调用
}
$var = "测试数据";    //闭包的一个重要概念就是内部函数中使用外部变量,通过 use 关键字实现
callback(function() use(&$var){        //调用函数的同时直接传入一个匿名函数
 echo "闭包数据的:{$var}";
});
?>
ログイン後にコピー
注: 上記の例では、use によって参照される変数は $var のコピーです。完全に引用したい場合は、 & を追加する必要があります。

上の例のシンボルのように。

【おすすめ関連チュートリアル】

1.「

php.cn Dugu Jiijian (4) - PHP ビデオチュートリアル

2. ビデオチュートリアル: 匿名関数とクロージャーの実装: 関数式とクロージャー

3.
php実践ビデオチュートリアル

以上がPHP関数における匿名関数とクロージャの実装の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート