レキシカルスコープ変数

レキシカルスコープ変数の意味とか使い方が良くわからなかったのでメモ

More than 1 year has passed since last update.

・失敗例

$message = 'hello';

// "use" がない場合
$example = function () {
    var_dump($message);
};
$example();
Notice: Undefined variable: message in /example.php on line 6
NULL

・成功例

$message = 'hello';

// useを使う場合、$message を引き継ぎます
$example = function () use ($message) {
    var_dump($message);
};
$example();

// 引き継がれた変数の値は、関数が定義された時点のものであり、
// 関数が呼ばれた時点のものではありません
$message = 'world';
$example();
string(5) "hello"
string(5) "hello"

参考
http://php.net/manual/ja/functions.anonymous.php