首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >__autoload不运行?

__autoload不运行?
EN

Stack Overflow用户
提问于 2014-08-05 11:21:00
回答 2查看 311关注 0票数 0

我有一个这样的文件结构;

代码语言:javascript
复制
/
/public
  -index.php
  -login.php
/config.php
/init.php
/classes/ClassGroup/ClassName.class.php

__autoload是在config.php中定义的,具有类的绝对路径。config.php在index.php中是必需的,但是当我尝试创建一个新类时;

代码语言:javascript
复制
$user = new User_User;

结果;

代码语言:javascript
复制
Fatal error: Class 'User_User' not found in /......./public/index.php on line 27

它没有找到它,而且在__autoload()的开头试图回显某些内容时,它也不会这样做,所以在我看来,它没有在没有找到类的情况下运行函数。有人知道问题出在哪里吗?

代码语言:javascript
复制
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' );
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-05 11:48:21

我发现了问题,显然这个函数不是自动调用的。这是解决办法;

代码语言:javascript
复制
spl_autoload_register('__autoload');

这个成功了。

票数 2
EN

Stack Overflow用户

发布于 2014-08-05 11:35:12

您的__autoload函数执行一个require(),这意味着如果找不到文件,它就会因为一个致命的错误而死。这意味着有两种可能性:

  1. 您的__autoload函数没有被调用
  2. 您的__autoload函数正在加载User.class.php,但该文件没有定义类User_User

向您的echo $path; die;中添加一个__autoload,以查看它是否实际被调用,以及它试图加载什么。检查User.class.php是否确实定义了类User_User,而且类名中没有输入错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25137554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档