Определение, является ли свойство объекта пустым

Я чувствую, что здесь что-то не хватает. Я довольно давно использовал функцию empty() PHP в определении того, является ли переменная пустой. Я хотел использовать его, чтобы определить, является ли свойство объекта пустым, но каким-то образом оно не работает. Вот упрощенный класс, иллюстрирующий проблему

 // The Class class Person{ private $number; public function __construct($num){ $this->number = $num; } // this the returns value, even though its a private member public function __get($property){ return intval($this->$property); } } 

 // The Code $person = new Person(5); if (empty($person->number)){ echo "its empty"; } else { echo "its not empty"; } 

Таким образом, объект $person должен иметь значение (5) в свойстве номера. Как вы, возможно, догадались, проблема в том, что php перекликается с «пустым». Но это не так !!!

Однако он работает, если я сохраняю свойство в переменной, а затем оцениваю его.

Итак, что было бы лучшим способом определить, является ли свойство объекта пустым? Спасибо.

Solutions Collecting From Web of "Определение, является ли свойство объекта пустым"

Вам нужно реализовать магический метод __isset () .

__isset () запускается вызовом isset () или empty () для недоступных свойств.

 public function __isset($property){ return isset($this->$property); } 

Проверьте, является ли возвращаемое значение null . Должен дать вам правильный ответ.

 if (empty(($person->number))) /* OR */ if (!isset($person->nothing) || empty(($person->nothing))) 

Помещение () вокруг значения Object-> Property заставит его оценивать до вызова пустого.