我有一个问题与类。我有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
文件夹,所以我不能从一个和三个文件夹调用方法。如何修复自动加载方法?
使用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;
}
}
});
但这也是一个有问题的方法。如果在one
和two
目录中都有一个Foo
类呢?你要进口哪个?要解决这些冲突,可以使用名称空间,并遵循PSR-0/4的指令。