[英]don't find class in root directory in use of spl_autoload_register
我使用spl_autoload_register进行类自动加载,如波纹管
spl_autoload_register(array($this, 'mainLoader'));
function mainLoader($class) {
$dirs = explode(CLASS_SEPARATOR, $class);
$dirsLen = count($dirs);
$class_name = $dirs[$dirsLen - 1];
if ($dirsLen > 1) {
$paths = array_slice($dirs, 0, $dirsLen - 1);
$path = ROOT . DIRECTORY_SEPARATOR . implode(DIRECTORY_SEPARATOR, $paths) . DIRECTORY_SEPARATOR;
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
} else {
set_include_path(get_include_path() . PATH_SEPARATOR . ROOT);
}
spl_autoload_extensions(".php");
spl_autoload($class_name);
}
输入类名可以是class,dir_class,dir_dir_class,...和文件可以是ROOT / class.php Root / dir / class.php,Root / dir / dir / class.php,...但是当我运行程序时出错对我来说
Fatal error: Class 'class' not found in ...
为什么我的自动装载机无法正常工作?
注意:此功能在Windows中运行良好,但在Linux Ubuntu 14.04中不起作用
您可能正在将camelCase名称用于您的文件。 Unix在文件名中区分大小写,而spl_autoload仅适用于小写。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.