非常に奇妙な動作をしているオブジェクトの配列があります。foreach ループ内に配置すると、メソッドを実行できます。
foreach ($options['image']->images as &$image) {
var_dump($options['image']->images[0]->src('small'));
}
戻り値:
string 'files/small/test.jpg' (length=20)
ただし、foreach ループの外側の同じ var_dump:
var_dump($options['image']->images[0]->src('small'));
foreach ($options['image']->images as &$image) {
var_dump($options['image']->images[0]->src('small'));
}
戻り値
Error: Call to a member function src() on a non-object
興味深いいくつかのテストを実行しました。
**Get Class**
echo get_class($options['image']->images[0]);
foreach ($options['image']->images as &$image) {
var_dump($options['image']->images[0]->src('small'));
}
戻り値:
Image
と:
**Get Class Methods**
var_dump(
get_class_methods($options['image']->images[0])
);
foreach ($options['image']->images as &$image) {
var_dump($options['image']->images[0]->src('small'));
}
戻り値:
array
0 => string '__construct' (length=11)
1 => string 'src' (length=3)
2 => string 'makeThumb' (length=9)
...
foreach ブロックの外側のオブジェクトに問題がある理由がわかりません。$options 配列自体が foreach ループに由来することに注意してください。
foreach ($option_goups as $options)