Мое предположение: $obj->data->field
"является" объектом, и класс не реализует метод __ isset () , так как он понадобится вам для использования empty () таким образом.
Что значит
echo "type:", gettype($obj->data), " class:", get_class($obj->data);
печать
автономный пример для демонстрации эффекта:
<?php
class Bar {
public $flag=false;
public function __isset($key) {
return $this->flag;
}
public function __get($key) {
return '#'.$key.'#';
}
}
$foo = new StdClass;
$foo->bar = new Bar;
echo empty($foo->bar->test) ? 'empty':'not empty', ", ", $foo->bar->test, "\n";
$foo->bar->flag = true;
echo empty($foo->bar->test) ? 'empty':'not empty', ", ", $foo->bar->test, "\n";
печать
empty, #test#
not empty, #test#