SPL автозагрузчик класса авто создания новых объектов - PullRequest
0 голосов
/ 21 января 2012

Я собираюсь вызвать создание новых объектов через автозагрузчик SPL.Но я не мог создать новый объект класса, который уже был включен загрузчиком.Не знаю почему, но я не хочу использовать eval, где я могу найти ответ?Извините за мой плохой английский ..

ничего странного, простой код:

class load
{  public static function init()
    {return spl_autoload_register(array(__CLASS__, "hook"));}
    public static function quit()
    {return spl_autoload_unregister(array(__CLASS__, "hook"));}
    public static function hook($class)
    {   echo "CLASS IS:$class<br>";
        $lnk=PATH . str_replace("_", "/", $class) . ".php";
        ob_start();
        require $lnk;

        ob_clean();

    }
}

1 Ответ

0 голосов
/ 21 января 2012

Автозагрузчики не для создания новых объектов;они для включения новых классов .Как только класс существует, автозагрузчик не должен загружать его снова - фактически, он не может обойтись без фатальной ошибки (поскольку классы не могут быть определены дважды).Поэтому он не будет запускать файл класса, который вы, вероятно, также закодировали, чтобы иметь некоторые другие побочные эффекты.

Если вы хотите новый объект, просто создайте его с помощью new ClassYouWantToCreatAnInstanceOf.Если класс еще не существует, автозагрузчик попытается загрузить его.Но файл класса обычно не должен создавать экземпляры сам по той причине, которую вы видите.

...