PHP: empty не работает с методом получения

У меня есть метод "получения" вроде

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?';
13
задан Alex 5 June 2011 в 05:02
поделиться