PHP自动加载不能使用其他文件夹

时间:2015-10-24 22:25:30

标签: php

我的课有问题。我有3个文件夹,称他们为onetwothreeone文件夹功能类似于控制器,two模型和three视图。我在two文件夹(模型图层)中创建了自动加载类,但我无法调用另一个类。我的autoload.php文件如下所示:

<?php

function __autoload($class){
    include 'two/'.$class .'.php';
}

spl_autoload_register('__autoload');

如果我在index.php中调用自动加载,则不会在two文件夹中看到另一个,因此我无法从一个和三个文件夹中调用方法。如何修复自动加载方法?

1 个答案:

答案 0 :(得分:0)

使用spl_autoload_register,您可以注册多个自动加载器。但第一种方法是注册一个自动加载器,检查其中一个文件夹($class.phponetwo)中是否存在three,并将其包括在内。

spl_autoload_register(function ($className) {
    $folders = ['one', 'two', 'three'];

    foreach ($folders as $folder) {
        if (file_exists($path = $folder. '/'.$className .'.php')) {
            include $path;
            break;
        }
    }
});

但这也是一个有问题的方法。如果您在Fooone目录中都有two课程怎么办?你要导入哪个?要解决这些冲突,请使用namespaces,并遵循PSR-0/4

的指示