Maison >développement back-end >tutoriel php >Explication détaillée d'exemples de fonctions fléchées en PHP
Les fermetures courtes appelées fonctions de flèche sont l'une des fonctionnalités tant attendues qu'apportera la version PHP7.4
. Il a été proposé par Nikita Popov, Levi Morrison et Bob Weinand. Vous pouvez lire la RFC originale ici
Recommandations d'apprentissage associées : Programmation PHP de l'entrée à la maîtrise
Exemple rapide tiré de 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));Regardons les règles
fn
rereturn
. use
$this
&
...
//作用域示例 $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; }
use
Dites-moi ce que vous pensez de ces mises à jour et quel est votre plat préféré ?Merci d'avoir lu.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!