PHPのクロージャオブジェクトの捕捉する環境について

PHPのクロージャオブジェクトの捕捉する環境についてどうも、ymizushiです。
今回はPHPのクロージャについてです。

PHP 5.3から PHPはクロージャが使えるようになりましたが、
use節の使い方によって、参照を束縛するか値を束縛するかが変わります。

例を見てみましょう。

use節に&をつけて参照渡しを行うと、
クロージャオブジェクトは参照に対して捕捉するため、
参照先についてはミュータブルになります。
つまり参照については、イミュータブルですが、
参照の示す先についてはクロージャオブジェクトは関知しないということです。

対して、use節に&をつけないと、クロージャオブジェクトは値に対して捕捉するため
イミュータブルになり、値の更新が行われません。

PHPはどこで参照渡しが行われ、どこで値渡しが行われるかわかりにくいので、
この辺りは注意したいですね。


この記事はあなたの役に立ちましたか?他の人達にも役立ちそうでしたら、上のボタンより共有をお願いします。共有して頂けたら今後提供する記事の参考やモチベーションアップにつながります。

Categorized: php, WEB