PHP5.5でcall_user_funcとuse構文の組み合わせに注意する
PHPのバージョンを上げた際に発覚した問題。
$array = explode('-', $keyword); $price = call_user_func(function () use ($array) { });
こんな感じの使い方している場合、
call_user_func
がうまく実行されずに、$price
が定義されない。
$array = explode('-', $keyword); $price = call_user_func(function () use (&$array) { });
この場合、call_user_func
のuse構文
にアンパサンドをつけて参照渡しにしないとだめだった。
手前で定義している$array
を参照したいか、
引数として関数実行時に$array
を期待するかで挙動が変わるっぽいのかな・・?
本来これが正しい挙動なのだろうけど、バージョンを上げる前は普通に動いていたのが怖い・・・
バグに依存した実装・・・
- 作者: 小川雄大,柄沢聡太郎,橋口誠
- 出版社/メーカー: 技術評論社
- 発売日: 2010/11/12
- メディア: 大型本
- 購入: 32人 クリック: 1,065回
- この商品を含むブログ (59件) を見る