DEVELOPERS BLOGデベロッパーズブログ
- HOME >
- 加藤 正人のデベロッパーズブログ >
- PHP 5.3 のクロージャの続き
加藤 正人のデベロッパーズブログ
- 氏名
- 加藤 正人
- 役職
- 多分SE
- 血液型
- 秘密
- 出没
- 美味しいもののあるところ
- 特色
- タヒチ大好き。ちょいメタボ。
- 2020/12/15
- CakePHP3 のリダイレクトがうまく行かない例
- 2020/11/12
- Apache Bench
- 2020/10/05
- PhpSpreadsheet でExcel ファイルを読み込む (CakePHP3)
以前「無名関数からの外部変数参照について」として「クロージャ間で値渡し変数がうまく共有されない」という記事を書いたが、テスト方法に問題があることに気付いた。
その時のコードでは test($x) で2回に分けてクロージャを生成しているため、$test1 に割り当てられる test() 内変数 $local_var と $test2 に割り当てられる $local_var とは異なるのは当然だった。
「JavaScript でのクロージャからの外部変数参照」と同等のコードでテストしたところ、クロージャ間で正しく共有されていることが確認できた。
ほぼ同等の動作をするような下記のコードを作ってみた。
このコードを実行すると、$f1 に割り当てられたクロージャと $f2 に割り当てられたクロージャ間で $json を共有し、両者の区別なく値が加算されていくことがわかる。
実際に実行した結果はこちら。
$ php test.php f1 => 2 f1 => 3 f1 => 4 f2 => 5 f2 => 6 f2 => 7 f1 => 8 f1 => 9 f1 => 10 $
関連エントリー
- 2019/04/03
- PHP で HTML を処理したい
- 2018/09/04
- MySQL にタイムゾーンを追加する
- 2015/11/07
- JavaScript でのクロージャからの外部変数参照
- 2015/10/24
- CsvLoader ビヘイビアを使って CSV を一発でロードする Cake Shell
- 2015/08/08
- 無名関数からの外部変数参照について
- 2015/08/01
- CKFinder v3.x で躓いた点
2020/12/15
2020/11/12
2020/10/05
2020/09/11
2020/08/03