php-синглтон продолжает дважды вызывать себя в классе автозапуска
Я создал класс автозапуска, который работает по назначению, но я заметил странное поведение. Когда я повторяю результаты найденных классов, которые передаются методу, обрабатывающему функцию spl_autoload_register()
. Я вижу, что у меня есть двойники. Например, если скрипт вызывается дважды, и поскольку он одноэлементный, данные в моем случае строят 2 массива.
Я использую этот метод для создания своего синглтона
public static function init()
{
if (!isset(self::$instance))
self::$instance = new self();
return self::$instance;
}
Затем для конструктора установлено значение private. Я прошел через каждый метод отладка, пытающаяся увидеть, где она появляется, чтобы создать собственный клон.
Я подозреваю, что мои классы и класс, если на то пошло, клонируются где-то в функции spl_autoload_register().
Буду признателен за любую помощь.
1 answers
Позвольте конструктору распечатать что-нибудь. Просто чтобы посмотреть, действительно ли его вызывают более одного раза. Вы используете два загрузчика, верно? я бы настроил sp_autoload_register в самом начале приложения (возможно, index.php ) и зарегистрируйте все необходимые автозагрузчики. Но сначала проверьте, вызывается ли конструктор более одного раза.
//сначала я бы изменил это:
private static $instance = null;
//функция инициализации
public static function init() {
if (self::$instance === null) {
self::$instance = new Autoload();
}
return self::$instance;
}