根据这个问题的回答,我希望我的代码能工作,但由于某种原因,它不是。我有一个简单的类,它从我的类库中扩展了一个类。
_custom.php
$custom = new MyClass();
class MyClass extends MyAbstractClass{
public function __construct(){
parent::__construct();
}
}
不幸的是,我得到了这个致命错误:
致命错误: Class' MyClass' not found in…
但是如果我去掉extends MyAbstractClass
,那么错误就消失了。似乎问题是,当试图扩展类时,它不试图加载MyAbstactClass
,然后导致MyClass
根本找不到。
对此有什么想法或建议吗?
PHP是一种解释性语言,这意味着PHP要定义的已知的是在语句之前解析的代码。
class MyClass extends MyAbstractClass{
public function __construct(){
parent::__construct(); #you are forcing a construct call, it is not required if the parent constructor has no args.
}
}
$custom = new MyClass();
对于类,你可以通过使用自动加载器来防止这种行为,当一个对象被调用并且未定义时,它将尝试注入并通过给定的代码解析该类。
您可以定义魔术函数__autoload(),但spl_autoload_register()是首选,因为它更动态,而不是像__autoload()
函数那样是常量。