2018/12/30 php,無名関数、クロージャー、など パート1

無名関数・クロージャーについてまとめる。

まず無名関数、ラムダ関数について。


$message = ‘testestテスト’;

$example=function($para){
var_dump($para);
};
$example($message);   //testtestテスト

$message=’worldworldワールド’;

$example($message);  //”worldworldワールド”


↑これも無名関数というんだと思う。





次にuseを使って外のスコープの変数(グローバル変数)を引き継ぐ方法(値渡し)


$message = ‘testてすと&テスト’;
$example = function () use ($message) {
var_dump($message);
};
$example();  //string(25) “testてすと&テスト”

$message = ‘worldわーるど&ワールド’;
$example();  //string(25) “testてすと&テスト”


↑ useを使ってグローバル変数を引き継いだ場合、無名関数を定義した時点での$messageの値を表示する。

その後$messageの値を’worldわーるど&ワールド’に変えても、$example()を実行した結果はstring(25) “testてすと&テスト”。…