У меня есть метод "получения" вроде
function getStuff($stuff){
return 'something';
}
если я проверю его с помощью пусто ($ this-> stuff)
, я всегда получаю FALSE
, но я знаю, что $ this-> stuff
возвращает данные, потому что он работает с echo.
и если я проверю его с помощью ! isset ($ this-> stuff)
, я получаю правильное значение, и условие никогда не выполняется ...
вот тестовый код:
class FooBase{
public function __get($name){
$getter = 'get'.ucfirst($name);
if(method_exists($this, $getter)) return $this->$getter();
throw new Exception("Property {$getter} is not defined.");
}
}
class Foo extends FooBase{
private $my_stuff;
public function getStuff(){
if(!$this->my_stuff) $this->my_stuff = 'whatever';
return $this->my_stuff;
}
}
$foo = new Foo();
echo $foo->stuff;
if(empty($foo->stuff)) echo 'but its not empty:(';
if($foo->stuff) echo 'see?';