閉鎖とも呼ばれる匿名関数は、実行時に関数を動的に定義するためにPHPによってサポートされるメカニズムです。このタイプの関数には名前がなく、変数に直接割り当てる、パラメーターとして渡されるか、コールバックやその他のシナリオに使用できます。現代のPHPプログラミングでは非常に一般的です。
PHPでパラメーターを受信する匿名関数を定義するための基本的な構文は次のとおりです。
function($argument1, $argument2, ..., $argumentN) {
// 関数本体
}
任意の数のパラメーターを通常の関数のような匿名関数に渡すことができます。
匿名関数のパラメーターは、価値によって、および参照によって2つの方法で渡すことができます。
値を渡すと、関数内のパラメーターの変更は外部変数に影響しません。
// 価値を渡します
$increment = function($number) {
return $number + 1;
};
echo $increment(5); // 出力:6
参照ごとに渡され、 &シンボルが使用され、関数内のパラメーターの変更が関数の外側に同期して反映されます。
// 参照で渡されます
$double = function(&$number) {
$number *= 2;
};
$value = 4;
$double($value);
echo $value; // 出力:8
匿名関数の実際のアプリケーションは非常に広範であり、以下はそれらの一般的な用途を説明する2つの例です。
Array_Filter関数を組み合わせて、匿名関数を使用して、特定の条件を満たす配列の要素をすばやくフィルタリングします。
$numbers = array(1, 2, 3, 4, 5);
$evenNumbers = array_filter($numbers, function($number) {
return $number % 2 == 0;
});
print_r($evenNumbers);
// 出力:Array ( [1] => 2 [3] => 4 )
匿名関数は、文字処理などの高度なアプリケーションでも使用できます。
$string = "Hello, world!";
$lengthWithoutSpaces = 0;
array_walk(str_split($string), function($character) use (&$lengthWithoutSpaces) {
if (ord($character) != 32) {
$lengthWithoutSpaces++;
}
});
echo $lengthWithoutSpaces; // 出力:12
PHPの匿名関数は、構文だけでなく、強力でもあります。柔軟なパラメーターの合格方法をサポートし、関数内に直接入力値または参照を使用できます。これは、コードの読みやすさとモジュール性を改善するのに非常に役立ちます。毎日の開発では、匿名関数の使用を習得することは、効率的なPHPコードを作成することの重要な部分です。