短いクロージャ (アロー関数とも呼ばれる) は、PHP で書かれた短い関数です。この関数は、 array_map## を使用するなど、クロージャを関数に渡すときに非常に役立ちます。 # または array_filter 関数。
// Post 对象的集合 $posts = [/* … */]; $ids = array_map(fn($post) => $post->id, $posts);以前は、次のように記述する必要がありました:
$ids = array_map(function ($post) { return $post->id; }, $posts);
使用方法を要約しましょう短いクロージャ関数。
PHP 7.4 で使用可能fn キーワードで始まる式を 1 つだけ含めることができます。つまり、return 式 return キーワードはパラメータとパラメータを無視できます。戻り値の型は、型ヒントとして使用できます。上記の例のより厳密な型制限は、次のように記述できます。$ids = array_map(fn (Post $post): int => $post->id, $posts);
fn&($x) => $ x
$modifier = 5; array_map(fn($x) => $x * $modifier, $numbers);外部スコープ内の変数は変更できないことに注意してください。参照渡しではなく値渡しであるためです。これは、短いクロージャ内で $modifier 変数を変更できるが、外側のスコープ内の $modifier 変数には影響しないことを意味します。 もちろん、例外はあります。それは、通常のクロージャと同じ機能を持つ $this キーワードです。
array_map(fn($x) => $x * $this->modifier, $numbers);開発の見通し私はすでに複数行のクロージャは、まだ将来的に開発の可能性があると述べました。私の頭の中にあるもう 1 つのアイデアは、ゲッター関数やセッター関数などの短いクロージャをクラスで使用できるようにすることです。
class Post { private $title; fn getTitle() => $this->title; }要するに、短いクロージャは次のとおりです。非常に人気のある機能ですが、改善が必要な部分はたくさんあります。最も可能性が高いのは複数行のクロージャです。
以上が詳細 ---PHP 7.4 の新しいアロー関数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。