我有一个看起来像这样的文件结构;
/
/public
-index.php
-login.php
/config.php
/init.php
/classes/ClassGroup/ClassName.class.php
__ autoload在config.php中定义,具有类的绝对路径。 index.php中需要config.php,但是当我尝试启动一个新类时,
$user = new User_User;
结果;
Fatal error: Class 'User_User' not found in /......./public/index.php on line 27
它没有找到它,并且当试图在__autoload()的最开始回应一些东西时,它也没有这样做,所以在我看来它没有在找不到类时运行该函数。 任何人都知道问题可能是什么?
function __autoload($class){
//echo "autoloader started";
$pieces = explode('_', $class);
$path = __SITE_PATH.'/classes';
foreach( $pieces as $i ){
$path .= '/'.$i;
}
//echo "trying to include " .$path.".class.php";
require_once( $path . '.class.php' );
}
答案 0 :(得分:1)
您的__autoload
函数执行require()
,这意味着如果找不到该文件,它应该会导致致命错误。这意味着有两种可能性:
__autoload
函数__autoload
函数正在加载User.class.php,但该文件未定义类User_User 向echo $path; die;
添加__autoload
,看看它是否真正被调用以及它正在尝试加载的内容。检查User.class.php是否确实定义了User_User类,并且您不会在类名中输入拼写错误。
答案 1 :(得分:1)
我发现了问题,显然这个功能没有被自动调用。 这是修复;
spl_autoload_register('__autoload');
这很有用。