SPL自动加载器类自动创建新对象

时间:2012-01-21 04:41:42

标签: php eval spl

我将通过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 :(得分:0)

Autoloader不用于创建新对象;他们要包括新的。一旦类存在,自动加载器就不需要再次加载它 - 事实上,它不能不触发致命错误(因为类不能定义两次)。因此,它不会运行您可能编码为具有其他副作用的类文件。

如果您想要一个新对象,只需使用new ClassYouWantToCreatAnInstanceOf创建它。如果该类尚不存在,则自动装带器将尝试加载它。但是,由于你看到的原因,类文件通常不应该自己创建实例。