#アロー関数と呼ばれる短いクロージャは、バージョン PHP7.4
がもたらす待望の機能の 1 つです。 Nikita Popov、Levi Morrison、Bob Weinand によって提案されました。オリジナルの RFC はここで読むことができます
関連学習の推奨事項:初心者からマスターまでの PHP プログラミング
Doctrine DBAL からの簡単な例
//老办法 $this->existingSchemaPaths = array_filter($paths, function ($v) use ($names) { return in_array($v, $names); }); // 使用箭头函数的新方法 $this->existingSchemaPaths = array_filter($paths, fn($v) => in_array($v, $names));
fn
は、 の代わりにキーワードです。予約された関数名。 rereturn
および use
キーワードを使用する必要はありません。 $this
変数、スコープ、LSB スコープは自動的にバインドされます。 &
とスプレッド演算子 ...
//作用域示例 $discount = 5; $items = array_map(fn($item) => $item - $discount, $items); //类型提示 $users = array_map(fn(User $user): int => $user->id, $users); //展开操作符 function complement(callable $f) { return fn(...$args) => !$f(...$args); } //嵌套 $z = 1; $fn = fn($x) => fn($y) => $x * $y + $z; //有效的函数签名 fn(array $x) => $x; fn(): int => $x; fn($x = 42) => $x; fn(&$x) => $x; fn&($x) => $x; fn($x, ...$rest) => $rest;
//现今 class Test { public function method() { $fn = fn() => var_dump($this); $fn(); // object(Test)#1 { ... } $fn = static fn() => var_dump($this); $fn(); // Error: Using $this when not in object context } } //也许在未来的某一天 class Test { private $foo; private $bar; fn getFoo() => $this->foo; fn getBar() => $this->bar; }
キーワードは必要ありません。
これらのアップデートについてどう思うか、また最も気に入った点は何でしたか教えてください。 #########読んでくれてありがとう。
以上がPHPのアロー関数の例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。