PHP 自动加载扩展 类
PHP Autoloading Extended Classes
根据 this question 的回复,我希望我的代码能正常工作,但由于某些原因它不能。我有一个简单的 class,它从我的 classes.
库中扩展了一个 class
_custom.php
$custom = new MyClass();
class MyClass extends MyAbstractClass{
public function __construct(){
parent::__construct();
}
}
不幸的是,我遇到了这个致命错误:
Fatal error: Class 'MyClass' not found in ...
但是如果我删除 extends MyAbstractClass
那么错误就会消失。似乎问题在于,当尝试扩展 class 时,它不会尝试加载 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();
使用 classes 你可以通过使用自动加载器来防止这种行为,当一个对象被调用但未定义时,它将尝试 注入 并解析 class 根据您给定的代码。
您可以定义魔术函数 __autoload() but the spl_autoload_register() 是首选,因为它更动态,而不是像 __autoload()
函数那样是常量。
根据 this question 的回复,我希望我的代码能正常工作,但由于某些原因它不能。我有一个简单的 class,它从我的 classes.
库中扩展了一个 class_custom.php
$custom = new MyClass();
class MyClass extends MyAbstractClass{
public function __construct(){
parent::__construct();
}
}
不幸的是,我遇到了这个致命错误:
Fatal error: Class 'MyClass' not found in ...
但是如果我删除 extends MyAbstractClass
那么错误就会消失。似乎问题在于,当尝试扩展 class 时,它不会尝试加载 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();
使用 classes 你可以通过使用自动加载器来防止这种行为,当一个对象被调用但未定义时,它将尝试 注入 并解析 class 根据您给定的代码。
您可以定义魔术函数 __autoload() but the spl_autoload_register() 是首选,因为它更动态,而不是像 __autoload()
函数那样是常量。