我有一个这样的文件结构;
/
/public
-index.php
-login.php
/config.php
/init.php
/classes/ClassGroup/ClassName.class.php__autoload是在config.php中定义的,具有类的绝对路径。config.php在index.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' );
}发布于 2014-08-05 11:48:21
我发现了问题,显然这个函数不是自动调用的。这是解决办法;
spl_autoload_register('__autoload');这个成功了。
发布于 2014-08-05 11:35:12
您的__autoload函数执行一个require(),这意味着如果找不到文件,它就会因为一个致命的错误而死。这意味着有两种可能性:
__autoload函数没有被调用__autoload函数正在加载User.class.php,但该文件没有定义类User_User向您的echo $path; die;中添加一个__autoload,以查看它是否实际被调用,以及它试图加载什么。检查User.class.php是否确实定义了类User_User,而且类名中没有输入错误。
https://stackoverflow.com/questions/25137554
复制相似问题