При реализации какого-то класса я столкнулся с небольшой проблемой: Если скрипт заканчивается и вызываются деструкторы , потому что сценарий закончен, мне иногда нужно было вызвать ошибку. Я думал, что функция trigger_error() будет trigger_error() . Однако, если error_reporting(-1) инициированная ошибка больше не отправляется STDOUT или STDERR – пока ожидается, что это произойдет (например, если не в […]
поэтому у меня есть следующая проблема. У меня есть класс сеанса, который должен сохранить его данные в базе данных в конце выполнения запроса. В принципе, когда он разрушен. В этом случае я использую singleton-шаблон. У меня такой деструктор: public function __destruct() { $this->_save(); // _save is public // exit('I can reach this point with no […]
Работа с инфраструктурой MVC и контроллером отображает страницу в деструкторе. Я загружаю файл через php, поэтому в конце действия скрипт должен заканчиваться. Как закончить скрипт без вызова деструктора? Есть ли лучшее решение? exit и die вызовите деструктора.
Если реализован класс, который создает HTML для страницы, создавая его и вызывая различные методы, целесообразно ли определять часть отображения / эха класса внутри деструктора? Вместо явного Class:displayHTML(); метод, имеющий echo $this->html в деструкторе и всякий раз, когда вы готовы отображать вызов unset($object); который будет отображать его? Я знаю, что деструктор, вероятно, не лучшее место для […]
Я разрабатываю систему обработки ошибок для своего приложения. Я хочу основать его на исключениях, и я хочу получать уведомления по электронной почте обо всех исключениях, которые я не ожидал. Я думал о классе: class My_Exception extends Exception { private $sendErrorReport = true; public function __destruct() { if ($this->sendErrorReport) { // send the error report by […]
При вызове file_put_contents() внутри деструктора он заставляет файлы записываться в SERVER_ROOT … (Yikes!) Обходные решения? tldr: Я хочу кэшировать массив, возможно, содержащий сериализованные экземпляры класса. Я решил, что на данный момент я бы написал класс, который реализует кеш, используя unserialize()/file_get_contents() и serialize()/file_put_contents() а затем скрывает его функциональность за более общим классом Cache. (Я не знаю, […]
Вызов функции __construct () из __destruct (), <?php public function __construct() { echo "Hi"; } public function __destruct() { $this->__construct(); } ?> будет ли он создавать бесконечный цикл?
<?php class A { static private $_instance = null; static public function Init() { self::$_instance = new A(); } function __construct() { echo "__construct\n"; } function __destruct() { var_dump(debug_backtrace()); echo "__destruct\n"; } } $a = A::Init(); Как правило, мы должны получить следующий результат: (Да, я получил этот результат на двух разных серверах с PHP 5.2.10-2ubuntu6.10 […]
Является ли деструктор класса в PHP предсказуемым? Когда называется деструктор? Как и на многих языках, будет вызван деструктор класса, как только объект выходит за рамки?
Как вы думаете, это хорошая идея? Допустим, у вас есть компонент приложения, который используется другими компонентами для извлечения / обновления данных в db. Это в основном класс с методами get (), set (), update (). Было бы хорошей идеей для того, чтобы этот компонент обновлял (или устанавливал) данные только в своих свойствах при вызове и […]