调用class_exists时自动加载成功/失败

时间:2014-05-10 09:52:16

标签: php class autoload

在调用class_exists时,无论如何都知道自动装带器是否成功?

2 个答案:

答案 0 :(得分:0)

在自动加载器结束时检查是否存在类。

function __autoload($className) {

    //Your code here

    if(class_exists('You_Class', false)) {
        //succeed
    } else {
        //failure
    }
}

答案 1 :(得分:0)

您必须检查class_exists两次。

  1. 如有必要,自动加载
  2. 在autoload
  3. 之后查看班级是否现在存在

    我的工作代码是:

    $autoload = spl_autoload_functions() ? true : false; // spl_autoload_functions can return array, empty array or false, but we need boolean
    $should_include = $autoload ? class_exists($className, true) : true;
    
    if($should_include && !class_exists($className, false)){ // make sure the class does not exist before including
        if(is_readable($fileName)){
            include_once($fileName);
        } else {
            throw new Exception('Could not include ' . $className);
        }
    }
    

    尝试在退回之前使用先前定义的自动加载器。