PHP新手 - PHP类自动加载和保护

时间:2011-10-12 11:25:56

标签: php autoload

我对学习自动加载感兴趣,但对PHP不熟悉。 我正在阅读“PHP in Action”一书,它写了像

这样的自动加载方法
function __autoload($className) {
 include_once __autoloadFilename($className);
}
function __autoloadFilename($className) {
 return str_replace('_','/',$className).".php";
}

我想在一个类中打包这些方法。将它们打包成抽象类更好吗?

或者在普通班级中将其包含在index.php中?

我可以有效地使用自动加载功能吗?

由于

2 个答案:

答案 0 :(得分:1)

保护自动装带器,确保:

您还可以列出适合具体自动加载器的命名空间和/或类名。

创建一个类作为自动加载器,您不能采用静态方式,只需使用spl_autoload_register分配任何回调,这样就可以注册多个自动加载器。

一些快速编写的自动加载器类存根:

class MyAutoloader
{
    public function __construct()
    {
        $this->register();
    }
    public function register()
    {
        spl_autoload_register(array($this,'autoload'));
    }
    public function autoload($classname)
    {
        if ($this->isInvalidClassName($classname)) return;
        $file = $this->getFileForClassName($classname);
        if ($this->isInalidFile($file)) return;
        require $file; // bail out fatally.
    }
    ...
}

$myAutoloader = new MyAutoloader();

答案 1 :(得分:0)

这取决于你。我使用一个名为Loader的专用类,其方法名为load(),我用以下方法激活:

spl_autoload_register( 'Utility_Loader::load' );