我在使用此自动加载器加载的多个子文件夹中有很多类:
spl_autoload_register(function ($class) {
$class = str_replace('\\', DIRECTORY_SEPARATOR, strtolower($class));
if(file_exists(FILES_PATH.'classes/'.$class.'.class.php')){
require_once(FILES_PATH.'classes/'.$class.'.class.php');
}
});
因此,如果我执行 new Folder\subFolder\Myclass,它会起作用。
文件夹中的类都在一个命名空间中。
所有这些类都必须使用数据库类,问题就在这里:当类在命名空间中并搜索数据库类时,它找不到它。
(数据库类在全局命名空间中)
所以我尝试输入“使用 BDD”(Bdd 是 db 类)但它仍然不起作用,因为 Bdd 正在使用 PDO,所以我必须执行“使用 bdd,pdo;” 在项目的每一个类中......
我觉得这很愚蠢。这是正常的吗?有没有更好的方法来自动加载,而不使用命名空间?