__autoload不运行?

时间:2014-08-05 11:21:00

标签: php oop autoload

我有一个看起来像这样的文件结构;

/
/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' );
}

2 个答案:

答案 0 :(得分:1)

您的__autoload函数执行require(),这意味着如果找不到该文件,它应该会导致致命错误。这意味着有两种可能性:

  1. 未调用__autoload函数
  2. 您的__autoload函数正在加载User.class.php,但该文件未定义类User_User
  3. echo $path; die;添加__autoload,看看它是否真正被调用以及它正在尝试加载的内容。检查User.class.php是否确实定义了User_User类,并且您不会在类名中输入拼写错误。

答案 1 :(得分:1)

我发现了问题,显然这个功能没有被自动调用。 这是修复;

spl_autoload_register('__autoload');

这很有用。