У меня есть класс, у которого есть свойство, которое я хочу сбросить / уничтожить во время выполнения. Сброс происходит в определенном методе, но вызывающий его метод возвращает TRUE
в property_exists
, в то время как он не может напрямую получить доступ к свойству с помощью $this->property
, так как возвращает уведомление Notice: Undefined property:...
public function get(int $id) {
if ($record->data) {
$this->_transform($record); // Calling method that unsets prop
}
if (! property_exists($this, 'isEmpty') ) { // FALSE
$this->transform();
}else{
echo $this->isEmpty; // FALSE as well!
}
return $this;
}
private method _transform(Record $record) {
unset($this->isEmpty); // Unsetting happens here
return;
}
Как видно из кода после сброса, property_exists
возвращает TRUE, чего не должно быть, но свойство не определено.
EDIT
Похоже, что если свойство объявлено в схеме класса, его нельзя уничтожить / сбросить (см. Демонстрацию выбранного ответа), и на самом деле оно ведет себя парадоксально: property_exists => TRUE, object-> property => warning
НО, когда свойство не определено, но создано при построении объекта, тогда оно может быть не задано и вести себя как ожидалось.