繁体   English   中英

使用spl_autoload_register时,在根目录中找不到类

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM