PHP自动加载扩展类


PHP Autoloading Extended Classes

根据这个问题的回答,我希望我的代码能工作,但由于某种原因,它不是。我有一个简单的类,它从我的类库中扩展了一个类。

_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()函数那样是常量。