У меня есть очень специфическая проблема, которую я не могу решить.PHP singleton class lifetime hack
У меня есть система PHP, состоящая из нескольких классов. Большинство из них являются родовыми классами и загружаются с помощью обработчика автозагрузки и создаются в глобальной области вручную (новый оператор).
Но у меня также есть один основной и очень важный одноэлементный класс, который также существует в глобальном масштабе и создается первым. Я хочу сделать это до конца. Этот класс (созданный первым) должен быть уничтожен последним.
Этот класс является классом обработки ошибок, и есть только два общих методов, которые будут использоваться для управления ошибками, перехватывать исключения, проверьте выход, отправлять отчеты и т.д.
Но этот класс уничтожит первую как это было создано в первую очередь.
Возможно ли повлиять на продолжительность жизни класса и заставить его умереть после того, как все другие классы умерли?
Спасибо.
UPD расширенные примеры кода:
каждого класса, определенные в файле отделенного
class longlive { // error processing class
private function __construct() {}
public static function initialize() {
self::$instance = new longlive();
}
public function __destruct() {
/// check for runtime session errors, send reports to administrators
}
public static function handler($errno, $errstr, $errfile = '', $errline = '', $errcontext = array()) {
/// set_error_handler set this method
/// process errors and store
}
public static function checkExit() {
/// register_shutdown_function will register this method
/// will trigger on normal exit or if exception throwed
/// show nice screen of death if got an uncoverable error
}
}
class some_wrapper {
public function __construct() {}
public function __destruct() {}
}
class core {
private function __construct() {
$this->wrapper = new some_wrapper();
}
public static function initialize() {
self::$core = new core();
}
}
тело сценария:
include_once('path/to/longlive.php');
longlive::initialize();
include_once('path/to/core.php');
core::initialize();
«Безопасность причины "звучат * чрезвычайно маловероятно ... И я предлагаю вам взглянуть на концепции внедрения зависимостей: они значительно упростят кодирование и ваш код станет более гибким. – lonesomeday
Безопасность от Singleton? В самом деле?! – KingCrunch
вы можете забыть о нераскрытых соображениях безопасности и посоветоваться со мной о жизненном цикле класса? Благодарю. – ntvf