文件夹结构如下:
-classes
-controller
-ProductCtrl.php
-model
-view
-includes
-components
-autoload.inc.php
-pages
-home.php
-add-product.php
-index.php
这是我的自动加载器功能:
spl_autoload_register(function ($class) {
$str = str_replace("\", "/", $class);
$file = $str.".php";
// if the file exists, require it
if (file_exists($file)) {
require $file;
}
});
index . php
<?php
require "includes/autoload.inc.php";
//home page
include "pages/Home.php";
现在我可以访问ProductCtrlclass fromhome.php在index.php,但是每当我尝试访问中的相同类时,add-product.php文件,它给我一个错误说:
Fatal error: Uncaught Error: Class "classescontrollerProductCtrl" not found in
project_directorypagesadd-product.php
注意:我在每个包含文件夹结构的类中都使用了命名空间。
该文件很可能不存在,因此类仍未定义。
如果你指定了一个基本路径,它会更显式,并且可能已经解决了:
$file = __DIR__ . '///..///' . $str . ".php";
trigger_error("looking for file: '$file'");
还要检查错误日志,查看显示自动加载器处理哪些文件路径的通知(通过trigger_error
日志记录,您可以稍后删除它)。