找不到反射类但没有抛出异常

时间:2013-12-26 05:44:08

标签: php reflection

好的,情况非常简单:我有一个类(名为Edam),我想在那里创建新的反射实例,如下所示:

public static function getClass($className) {
    try {
        $refl = new \ReflectionClass("classes\\$className");
        return $refl->newInstance();
    } catch (\Exception $e) {
        var_dump($e);
    }
}

我在其他类中使用上述函数:

    $test = Edam::getClass("SomethingThatDoesntExist");

问题是我无法捕获异常(没有任何内容被打印到输出中),我认为应该抛出这种情况。捕获异常非常重要,这样我就可以通知用户所请求的类不存在。

1 个答案:

答案 0 :(得分:0)

问题在于spl_autoload_register(),它在找不到文件时终止了执行。添加了以下文件检查哪个效果很好:

spl_autoload_register(function($className) {
    $path = str_replace("\\", DIRECTORY_SEPARATOR, $className) . ".php";
    if (file_exists($path))
        require_once($path);
});