PHP自动加载扩展类

时间:2016-09-13 01:26:28

标签: php oop spl-autoload-register

根据this question的回复,我希望我的代码能够正常工作,但由于某种原因,它不是。我有一个简单的类,它从我的类库中扩展了一个类。

_custom.php

$custom = new MyClass();
class MyClass extends MyAbstractClass{

  public function __construct(){
      parent::__construct();
  }

}

不幸的是我得到了这个致命的错误:

  

致命错误:Class' MyClass'没找到...

但是,如果我删除extends MyAbstractClass,那么错误就会消失。似乎问题在于,当尝试扩展类时,它不会尝试加载MyAbstactClass,这会导致MyClass根本无法找到。

对此有何想法或建议?

1 个答案:

答案 0 :(得分:0)

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()函数的常量。