重复使用我,我加载时使用这个自动加载的倍数子文件夹的大量类:PHP的命名空间 - 在每个类
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');
}
});
所以,如果我做新的文件夹\子文件夹\ MYCLASS,它的工作原理。
文件夹中的类都在名称空间中。
所有这些类必须使用数据库类,问题就在这里: 当类是在命名空间和搜索数据库类,它不能找到它。
(DB类是在全局命名空间)
所以我试图把“使用BDD”(BDD是DB类),它仍然无法正常工作,因为BDD使用PDO,所以我必须做“使用bdd,pdo;”在项目的每一个阶段...
我觉得这很愚蠢。这是正常的吗? 有没有更好的方式来自动加载,而不使用名称空间?
考虑采用PSR编码标准及其自动加载磁带机:http://phpmaster.com/autoloading-and-the-psr-0-standard/ – Gordon
尝试使用像'\ BDD'这样的全局类。它应该解决这个问题。 –
是的,每个文件都有自己的命名空间声明,因此它自己的'use'导入。不,这是没有办法的。不,这不是“愚蠢的”。我不明白为什么你需要在每个使用BDD的文件中使用PDO。 – deceze