我将通过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();
}
}
答案 0 :(得分:0)
Autoloader不用于创建新对象;他们要包括新的类。一旦类存在,自动加载器就不需要再次加载它 - 事实上,它不能不触发致命错误(因为类不能定义两次)。因此,它不会运行您可能编码为具有其他副作用的类文件。
如果您想要一个新对象,只需使用new ClassYouWantToCreatAnInstanceOf
创建它。如果该类尚不存在,则自动装带器将尝试加载它。但是,由于你看到的原因,类文件通常不应该自己创建实例。