【发布时间】:2020-07-07 15:46:58
【问题描述】:
我可以在不知道源代码中的名称的情况下实例化一个类,如下所示:
function get_secret_instance($secret_class_name) {
return new $secret_class_name();
}
现在,我想扔又接这个。
function throw_and_catch_secret_instance($secret_class_name) {
try {
throw new $secret_class_name();
} catch ($secret_class_name $e) {
echo "Got you ;)\n";
}
}
但是,apache 记录了 PHP Parse error: syntax error, unexpected '$secret_class_name' (T_VARIABLE), expecting identifier (T_STRING) or namespace (T_NAMESPACE) or \\\\ (T_NS_SEPARATOR)。
我怎样才能做到这一点?
【问题讨论】:
-
短版:你不能,对不起
-
为什么不直接使用
catch(Exception $e)呢?这将捕获所有异常。 -
@iainn 是的,没找到那个,所以我猜这个可以标记为 dup。
-
@MagnusEriksson 这个想法通常应该是只捕捉需要捕捉的东西。但实际上,这就是我现在正在做的事情,而且看起来,这是唯一有用的方法。 (除了我抓到
Throwable而不是Exception)
标签: php