【PHP入門】無名関数とuse()の使い方をシンプルに解説!

はじめに

PHPを書いていると突然出てくる「無名関数」や「use()」の使い方、ちゃんと理解していますか?
今回は、無名関数とは何か、なぜ use() を使うのかを、なるべくシンプルなコードで解説していきます!

無名関数とは?

無名関数とは、その名の通り「名前を持たない関数」のことです。 別名「クロージャ(Closure)」とも呼ばれます。

やりたいこと

  1. 無名関数の意味と使い方を理解する

  2. use() の役割を知る

  3. クロージャの便利な使い道を学ぶ


コードスクリプト

コードスクリプトの概要

  • 無名関数とは名前のない関数(=その場で定義してその場で使う)

  • use() を使うと外側の変数を無名関数内で使える

コード例①:基本の無名関数

<?php

$greet = function ($name) {
return "こんにちは、" . $name . "さん!";
};

echo $greet("太郎"); // こんにちは、太郎さん!

コード例②:use()を使う場合

<?php

$message = "お疲れ様です";

$notify = function ($name) use ($message) {
return $name . "さん、" . $message;
};

echo $notify("花子"); // 花子さん、お疲れ様です

実行結果

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でも頻出なので、今のうちにマスターしておくと後々かなり役立ちます!

コメント

タイトルとURLをコピーしました