好的,情况非常简单:我有一个类(名为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");
问题是我无法捕获异常(没有任何内容被打印到输出中),我认为应该抛出这种情况。捕获异常非常重要,这样我就可以通知用户所请求的类不存在。
答案 0 :(得分:0)
问题在于spl_autoload_register(),它在找不到文件时终止了执行。添加了以下文件检查哪个效果很好:
spl_autoload_register(function($className) {
$path = str_replace("\\", DIRECTORY_SEPARATOR, $className) . ".php";
if (file_exists($path))
require_once($path);
});