Запретить вызов деструктора вручную

У меня этот класс:

class Test { private $test = 'ok'; public function doTest() { echo $this->test; } public function __destruct() { $this->test = 'not ok'; } } 

и следующий тестовый пример:

 $test = new Test; $test->__destruct(); // I wish this would throw a Fatal Error or something... $test->doTest(); // prints "not ok" 

То, что я хочу сделать, – это запретить __destruct() вручную, чтобы doTest() никогда не печатал «не нормально».

Я попытался настроить видимость деструктора на private , но это просто приводит к фатальной ошибке при уничтожении объекта. Опцией было бы установить флаг $this->destructed в деструкторе, а затем выбросить исключение в doTest() если этот флаг является истинным, но было бы не очень эффективно проверять этот флаг каждый раз при вызове метода ,

Таким образом, private деструктор невозможен, а флаг $this->destructed является уродливым. Есть ли лучшие способы?