yano3nora
7/2/2017 - 10:10 AM

[php: closure] Passing arguments to closures in #php

[php: closure] Passing arguments to closures in #php

//refs: http://php.net/manual/ja/functions.anonymous.php

$message = 'hello';

// $message は クロージャスコープになる
$example = function () {
    echo $message . 'world!' ;
};
$example();  // $message未定義エラー

// クロージャの引数はCall時に渡されたもの
$example = function ($message) {
    echo $message . 'world!' ;
};
$example();  // クロージャの引数ないよエラー

// use() で親スコープの$message を引き継ぐ
// 引き継がれた変数の値は、関数が定義された時点のもの
// 関数が呼ばれた時点のものではない
$example = function () use ($message) {
    echo $message;
};
$message = 'world';
$example();  //hello