PHPの無名関数(クロージャ)について
2019年03月14日
PHPの無名関数(クロージャ)についてのまとめです。
無名関数とは
無名関数とは、関数規則に沿って命名を必要とせず定義できる関数です。
function(引数) {
処理内容;
}
といった形で使用できます。
例えば
$func = function(引数) {
処理内容
}
といった形で定義した場合、この$funcは、ラムダ関数とも呼ばれます。
$a = $func(引数);
このような形式で、使用する場所で呼んで使用できます。
無名関数を使用するメリット
無名関数は概念的には関数と同じなので、無名関数にせず関数として定義して呼び出しても同じなのですが、
普通の関数を定義無名関数を使用することにより、その場限りで呼び出す処理の場合は、関数名を他の関数名と衝突しないで済む、プログラム全体が複雑にならないといったメリットがあります。
無名関数内の処理に外部の変数を使用したい場合
プログラムによっては、無名関数の中で使用するプログラムに、無名関数の外の変数を使用したい場合があります。
無名関数は関数なので、引数にしている変数以外の外部の変数は内部の処理には適用されません。
しかし、use文を使うことでその問題は解決できます。
$func = function(引数A) use(変数B) {
処理内容;
}
このように無名関数を使用することで、処理内容で引数Aだけでなく外部の変数Bも使用できます。