はじめに
PHPを書いていると突然出てくる「無名関数」や「use()」の使い方、ちゃんと理解していますか?
今回は、無名関数とは何か、なぜ use() を使うのかを、なるべくシンプルなコードで解説していきます!
無名関数とは?
無名関数とは、その名の通り「名前を持たない関数」のことです。 別名「クロージャ(Closure)」とも呼ばれます。
やりたいこと
-
無名関数の意味と使い方を理解する
-
use()の役割を知る -
クロージャの便利な使い道を学ぶ
コードスクリプト
コードスクリプトの概要
-
無名関数とは名前のない関数(=その場で定義してその場で使う)
-
use()を使うと外側の変数を無名関数内で使える
コード例①:基本の無名関数
コード例②:use()を使う場合
実行結果
bash
こんにちは、太郎さん! 花子さん、お疲れ様です
コード解説
■ 無名関数とは?
無名関数(anonymous function)とは、その名の通り「名前を持たない関数」のことです。
ふつうの関数は function greet() {} みたいに名前を付けますが、無名関数はこうです
$func = function () { return "Hello"; };
この関数は $func() として呼び出せます。
■ use() の意味とは?
無名関数の中で、外の変数を使いたいときに use() を使います。
例えばこのようなことはできません👇
$msg = “こんにちは”;
$func = function () {
// echo $msg; ← これはエラー
};
use() を使えばOK!
$msg = "こんにちは";
$func = function () use ($msg) {
echo $msg; // こんにちは
};
補足:ファイルの先頭に書く use とは別物!
use App\Models\Admin; use Illuminate\Support\Facades\DB;
これは「クラスやライブラリを読み込むための use」で、 無名関数で使う use ($msg) とはまったく意味が違います。
| 使い方 | 意味 |
|---|---|
ファイル先頭の use |
クラスや関数の読み込み(インポート) |
無名関数の use() |
外の変数を関数内に取り込む |
よくあるパターン:配列処理と無名関数
$names = ["太郎", "花子", "次郎"];
array_map(function ($name) {
echo "こんにちは、$name さん\n";
}, $names);
これも無名関数の定番の使い道です。
引数との違いは?
use() は外の変数を取り込むので、引数で渡す方法と似ています。
use() の例:
$message = "お疲れ様です";
$name = "花子";
$notify = function () use ($message, $name) {
return $name . "さん、" . $message;
};
引数の例:
$message = "お疲れ様です";
$notify = function ($name) use ($message) {
return $name . "さん、" . $message;
};
echo $notify("花子");
何が違うの?
- 引数:呼び出し時に値を自由に渡せる → 関数の再利用性が高い
- use:外のスコープの値をそのまま使う → その場限りの使い捨てに向いてる
まとめ
無名関数は「名前のない関数」、use() は「外の変数を使いたいとき」に使う。
Laravelでも頻出なので、今のうちにマスターしておくと後々かなり役立ちます!



コメント