使用splautoloadregister加载扩展到另一个类的类


using spl_autoload_register to load classes that extends to another class

好吧,我得到了这个oop:

abstract class TestSystemUtils {
abstract public function __run();
/* utils funcs */
}
class TestSystem extends TestSystemUtils {
protected $body;
protected $out;
function __construct() { }
public function __run() { } 
}

我得到了一个包含许多模块的目录,每个模块都是一个扩展TestSystem的类,但我不想包括所有模块,然后在方法__run中,我建立dbconnection来获取将要使用的模块,但在这一点上,idk是"包括"这些文件的正确方法,我可以使用__autoload func,但如果我应该在类TestSystem中调用这些类,所有模块都需要使用这两个变量"body"answers"out"。。。那么,正确的方法是什么?有人可以帮我。

模块类看起来像:

class mod01 extends TestSystem { }

谢谢。

在大多数情况下,您应该使用JIT(实时)加载。通过这种方式,您将只加载和编译将要使用的代码。项目越大,影响就越大。

同样建议使用spl_autoload_register(),因为它比__autoload()更强大,而且它为您提供了一种比单个函数更好的注册自动加载器的方法。

总之:1) 不要包含/要求在该脚本运行中不会使用的代码。2) 在类中封装尽可能多的内容,并让自动加载器根据需要包含这些内容。