ショート クロージャはアロー関数とも呼ばれ、PHP で書かれた短い関数です。この機能は、array_map
関数や array_filter
関数を使用する場合など、関数にクロージャを渡すときに役立ちます。 # 短いクロージャ関数の使い方をまとめてみましょう。
PHP 7.4で利用可能
fn付き
# には式を 1 つだけ含めることができます。つまり、return 式
// Post 对象的集合 $posts = [/* … */]; $ids = array_map(fn($post) => $post->id, $posts); 而以前,你必须这样写: $ids = array_map(function ($post) { return $post->id; }, $posts);言及する必要がある点が 2 つあります。 :
$ids = array_map(fn(Post $post): int => $post->id, $posts);つまり、短いクロージャは、式が 1 つだけ許可されることを除いて、通常のクロージャと同じ機能を持ちます。 。 それは同じだ。
単一行
正しく理解する必要があります。短いクロージャには式を 1 つだけ含めることができます。これは、クロージャ本体に複数の行を含めることはできないことを意味します。理由は次のとおりです。短いクロージャの目的は、冗長性を減らすことです。もちろん、いかなる場合でも fn
はfunction
より短いです。しかし、RFC の作成者 Nikita Popov は、複数行の式である関数を扱っている場合、クロージャを使用しても得られるメリットはさらに少ないと考えています。結局のところ、複数行のクロージャの定義はすでに非常に冗長なので、これら 2 つのキーワード (
function と
return
この観点に同意するかどうかはあなた次第です。私のプロジェクトでは単一行のクロージャのシナリオがたくさん考えられますが、複数行のクロージャのシナリオもたくさんあり、個人的にはそのような場合には短い構文を好みます。
ただし、希望はあります。複数行の短いクロージャが将来追加される可能性がありますが、それも別の RFC になるでしょう。
外部スコープの値
短いクロージャと通常のクロージャのもう 1 つの注目すべき特徴は、短いクロージャが use キーワード スコープ データを使用せずに外部にアクセスできることです。fn&($x) => $x外部スコープ内の変数は変更できないことに注意してください。参照渡しではなく値渡しであるためです。これは、短いクロージャ内の $modifier 変数を変更できるが、外側のスコープの
$modifier
変数には影響しないことを意味します。もちろん、例外があります。それは
$this キーワードであり、通常のクロージャとまったく同じ効果があります:
$modifier = 5; array_map(fn($x) => $x * $modifier, $numbers);
開発の見通し
getter 関数や setters
関数などの短いクロージャを許可することです。array_map(fn($x) => $x * $this->modifier, $numbers);
つまり、短いクロージャは非常に歓迎される機能です。 、まだ望むべき点はたくさんありますが。最も可能性が高いのは複数行のクロージャです。
以上がPHP 7.4 アロー関数の使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。