PHP8.0 は、PHP プログラミング言語の最新バージョンです。重要な更新の 1 つは、匿名関数の改善と機能強化です。匿名関数 (クロージャとも呼ばれる) は、実行時に動的に作成して他の関数に渡したり、変数に格納したりできる特別なタイプの関数です。 PHP では、匿名関数は高度なプログラミングや Web 開発にとって重要です。
PHP8.0 は、匿名関数をより柔軟で使いやすくする新しい構文と機能をいくつか提供します。更新内容の一部は次のとおりです。
PHP8.0 では、匿名関数はパラメータの型を宣言できます。これは、正しいパラメータ型が確実に渡されるように、型制約を通じて関数パラメータの型を制限できることを意味します。たとえば、次のコードは、匿名関数を使用して 2 つの整数の合計を計算し、結果を出力します。
$sum = function(int $a, int $b) { echo $a + $b; }; $sum(2, 3); // 输出 5
PHP8.0 では、::class
構文を使用して、クラスの完全修飾名 (クラス名) を取得できます。これにより、匿名関数でクラスを参照することが容易になります。例:
class Foo { public function bar() { $callback = function() { echo Foo::class; // 输出 Foo }; $callback(); } } $foo = new Foo(); $foo->bar();
アロー関数は、PHP7.4 で導入された新しい型です。これにより、よりコンパクトで簡潔な関数の記述が可能になります。 PHP 8.0 では、アロー関数の構文がさらに拡張されました。これで、「use」ステートメントをアロー関数のかっこの外側に配置し、アロー関数本体で変数名を使用するだけで済みます。たとえば、次のようになります。
$multiplier = 2; $numbers = [1, 2, 3]; $result = array_map(fn($num) => $num * $multiplier, $numbers); print_r($result); // 输出 [2, 4, 6]
この例では、fn($num) = > $num * $multiplier
は、各数値を複数の $multiplier
で乗算し、新しい配列を返すアロー関数です。
PHP8.0 では、匿名関数で可変パラメータ リストを使用できます。これは、任意の数の引数を関数に渡し、配列に格納できることを意味します。次に例を示します。
$sum = function(...$numbers) { $result = 0; foreach ($numbers as $num) { $result += $num; } return $result; }; echo $sum(1, 2, 3, 4); // 输出 10
この例では、...$numbers
構文は可変長引数リストを表し、渡されたすべての引数を配列に格納し、ループ Calculate に渡します。それらの合計。
PHP8.0 では、$this
キーワードを使用してクロージャ オブジェクトのスコープを参照できます。これは、外部オブジェクトのプロパティとメソッドに匿名関数でアクセスできることを意味します。例:
class Foo { private $bar = "Hello"; public function baz() { $callback = function() { echo $this->bar; // 访问外部对象的属性 }; $callback(); } } $foo = new Foo(); $foo->baz(); // 输出 Hello
この例では、匿名関数は $this->bar
を使用して、外部オブジェクトにアクセスします。 $foo
のプライベート プロパティ $bar
の値。
つまり、PHP8.0 の匿名関数の構文と機能がさらに強化され、改善されました。これらの更新により、匿名関数がより柔軟になり、使いやすくなり、Web アプリケーションの作成効率が向上します。 PHP プログラマーの場合は、これらの新機能についてできるだけ詳しく学び、次のプロジェクトで使用することをお勧めします。
以上がPHP8.0の匿名関数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。