Поскольку он проверяет __ isset , а не извлекает его с помощью __get.
Гораздо лучше выбрать __isset, так как не существует стандарта на то, что пусто. Может быть, в контексте класса null является приемлемым значением. Вы также можете иметь класс, который, если элемент не существует, возвращает новый пустой объект, который будет ломать isset($myObj->item)
, поскольку в этом случае он всегда будет возвращать true.