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

时间:2013-07-02 03:29:34

标签: php

好吧,我得到了这个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但idk如果我应该在类TestSystem中调用这些类,所有模块都需要使用这两个变量'body'和'out'...那么什么是正确的方法吗?有人可以帮我。

模块类看起来像:

class mod01 extends TestSystem { }

感谢。

1 个答案:

答案 0 :(得分:0)

对于大多数情况,您应该使用JIT(及时)加载。 这样,您将只加载和编译您将使用的代码。项目越大,它的影响就越大。

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

总结: 1)不要包含/要求在该脚本运行中不会使用的代码。 2)尽可能多地封装在类中,并让自动加载器包含它们所需的那些。