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