PHPを書いているときに、無名関数内で該当スコープで使用している変数を使用したいケースがあったので、まとめておきます。
ダメな例
下記のように記述するとNULLが出力されてしまいます。
$hoge = 1;
$hoge_func = function () {
var_dump($hoge);
};
$hoge_func();
出力結果
NULL
これは、無名関数内のスコープでは、$hogeが定義されていないからです。
正しい例
無名関数のスコープ外で使用されている変数を使用したい場合には、下記のように書きます。
$hoge = 1;
$hoge_func = function () use($hoge) {
var_dump($hoge);
};
$hoge_func();
出力結果
int(1)
まとめ
PHPだからよしなにやってくれるだろうと高を括らず(?)、きちんと使用する変数はuseで定義するようにしましょう。