php-синглтон продолжает дважды вызывать себя в классе автозапуска


Я создал класс автозапуска, который работает по назначению, но я заметил странное поведение. Когда я повторяю результаты найденных классов, которые передаются методу, обрабатывающему функцию spl_autoload_register(). Я вижу, что у меня есть двойники. Например, если скрипт вызывается дважды, и поскольку он одноэлементный, данные в моем случае строят 2 массива.

Я использую этот метод для создания своего синглтона

public static function init()
{
    if (!isset(self::$instance))
        self::$instance = new self();

    return self::$instance;
}

Затем для конструктора установлено значение private. Я прошел через каждый метод отладка, пытающаяся увидеть, где она появляется, чтобы создать собственный клон.

Я подозреваю, что мои классы и класс, если на то пошло, клонируются где-то в функции spl_autoload_register().

Буду признателен за любую помощь.

Author: Eli, 2012-02-15

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;
}
 3
Author: busypeoples, 2012-02-15 17:03:38