我的课有问题。我有3个文件夹,称他们为one
,two
和three
。 one
文件夹功能类似于控制器,two
模型和three
视图。我在two
文件夹(模型图层)中创建了自动加载类,但我无法调用另一个类。我的autoload.php文件如下所示:
<?php
function __autoload($class){
include 'two/'.$class .'.php';
}
spl_autoload_register('__autoload');
如果我在index.php中调用自动加载,则不会在two
文件夹中看到另一个,因此我无法从一个和三个文件夹中调用方法。如何修复自动加载方法?
答案 0 :(得分:0)
使用spl_autoload_register
,您可以注册多个自动加载器。但第一种方法是注册一个自动加载器,检查其中一个文件夹($class.php
,one
或two
)中是否存在three
,并将其包括在内。
spl_autoload_register(function ($className) {
$folders = ['one', 'two', 'three'];
foreach ($folders as $folder) {
if (file_exists($path = $folder. '/'.$className .'.php')) {
include $path;
break;
}
}
});
但这也是一个有问题的方法。如果您在Foo
和one
目录中都有two
课程怎么办?你要导入哪个?要解决这些冲突,请使用namespaces,并遵循PSR-0/4。