目前我正在递归查看我的类文件夹,以便找到我的类的路径以包含它。问题是,我想在各种不同的文件夹中包含许多不同的类。我创建的代码很乱,但它有效。
下面的代码不是我创建的递归函数,但它适用于myAutoloader()函数中定义的路径。
有没有办法在PHP中传递一个到spl_autoload函数的路径?
spl_autoload_register('myAutoloader');
function myAutoloader($className) {
$path = '/classes';
include $path . $className . '.php';
}
//-------------------------------------
// this one will work, as its path is specified in spl_autoload
$myClass1 = new MyClass1();
//this is located in /classes/other so it wont work
$myClass2 = new MyClass2();
答案 0 :(得分:1)
无法将路径传递给spl_autoload_register
中指定的回调函数
您只能在函数中创建此感知:
function myAutoloader($className) {
$paths = array(
'Class1' => '/subpath',
'Class2' => '/subpath/extra',
);
include $paths[$className] . '/'. $className . '.php';
}
那就是说,我强烈反对你采取这种做法。相反,我真的建议你:
composer
手动创建自动加载。答案 1 :(得分:1)
如果您的班级“MyClass1”以“MyClass1.php”等文件名存储,您可以这样做:
set_include_path('/classes:/classes/other');
spl_autoload_register();