用PHP加载基类+扩展类的正确方法


Proper way to load a base class + extended class in PHP

我正在做一个个人项目,这是我第一次使用OOP。我的项目有一个基类,它由其他人扩展(基本设置)。澄清一下,这就是我正在做的:

基本类别:

class ABC {
  function __construct() {
    ...
  }
}

扩展类:

class DEF extends ABC {
  function __construct() {
    ...
  }
}

虽然基类总是被加载的,但其他类是根据情况加载的。

我的问题是,动态加载正确的扩展类的正确方法是什么?我应该"导入"这两个php吗?我应该强制转换基类($x=new ABC()),然后从基类加载另一个类吗?

您可以在文件顶部使用自动加载器:

function __autoload($className) {
    require_once $className . '.php';
}

或者,您可以在子类constuctor中使用父类constractor并手动导入php文件:

require_once(your_file.php);
class DEF extends ABC {
    function __construct() {
        parent::__construct();
    }
}

如果将所有类放在同一个文件夹中,并将其命名为[class].php,则可以将以下内容放在脚本的顶部,它们都将神奇地加载

<?php
  function __autoload($class_name) {
      require_once $class_name . '.php';
  }

如果它们进入不同的文件夹,只需实现您自己的方案

参考:http://php.net/manual/en/language.oop5.autoload.php