【发布时间】:2017-03-19 01:38:43
【问题描述】:
我在一个名为 config.php 的文件中有一个自动加载器,如下所示:
spl_autoload_register(function($className) {
$className = ltrim($className, '\\');
$fileName = '';
$namespace = '';
if ($lastNsPos = strrpos($className, '\\')) {
$namespace = substr($className, 0, $lastNsPos);
$className = substr($className, $lastNsPos + 1);
$fileName = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR;
}
$fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
require $fileName;
});
我的文件夹结构如下:
涂黑的文件夹是项目的名称。请注意,config.php 位于“includes”子文件夹中。它通过在脚本中包含 require_once ('includes/config.php'); 行来自动加载 index.php 的类。创建了一个新文件 functions.php 来处理与 AJAX 请求的数据库的通信。只要该文件位于项目根目录中并且require_once ('includes/config.php'); 包含在脚本中,自动加载器就可以正常工作。然而,当functions.php 被移动到一个子文件夹时,比如说js 子文件夹,并且require_once ('../includes/config.php'); 包含在脚本中,自动加载器就不起作用了。显示的错误信息是Warning: require(classes\model\Operation.php): failed to open stream: No such file or directory in C:\xampp\htdocs\xxxxx\OOP\includes\config.php on line 74。当functions.php位于子文件夹中时,为什么自动加载器不工作?我希望它适用于项目根目录中的文件和子文件夹中的文件。
【问题讨论】:
标签: php