PHP での無名関数と PHP のバージョン 7.4 から追加されたアロー関数の書き方についてまとめます。
ドキュメントでは以下の様に解説されています。
無名関数は
PHP ドキュメントクロージャ
とも呼ばれ、 関数名を指定せずに関数を作成できるようにするものです。 callable パラメータとして使う際に便利ですが、用途はそれにとどまりません。
https://www.php.net/manual/ja/functions.anonymous.php
通常、関数を定義する際は関数名と処理の内容を定義しますが、無名関数とはその名の通り関数名を省略した形で関数が定義できる。
ということのようです。
関数名と処理を書いて関数を定義すると以下のようになります。
/**
* @return string
*/
public function getHelloWorld(): string
{
return 'Hello World';
}
無名関数の場合
/**
* @return string
*/
public function getHelloWorld(): string
{
$function = function() {
return 'HELLO WORLD';
};
return $function();
}
先ほど作成した関数の中に無名関数を作成しました。
$function = function() {
return 'HELLO WORLD';
};
ここの部分ですね。このように関数を定義して、$function(); で呼び出す。
といったことができるということですね。
ちょっとした処理をまとめる時などに使用されます。
また、PHP7.4 からさらに省略したアロー関数で書くことができます。
/**
* @return string
*/
public function getHelloWorld(): string
{
$function = fn() => 'hello world';
return $function();
}
上記は先ほどの無名関数と同様の動作をします。
名前ありの関数と同じ様に引数を渡すこともできます。
/**
* @return string
*/
public function getHelloWorld(): string
{
$message = 'hello';
$function = function ($message) {
return $message . ' world';
};
return $function($message);
}
アロー関数の場合
/**
* @return string
*/
public function getHelloWorld(): string
{
$message = 'Hello';
$function = fn($message) => $message . ' World';
return $function($message);
}
以上です!ちょっとした処理を複数回使う様な時とは無名関数をしてスッキリさせていきたいですね!
最後まで読んでいただきありがとうございました!