0

例子:

$var = 'post_type_archive';
$name = 'some-archive';
$condition = 'is_'.$var;
if($condition($name)) 

这被认为是一个很大的禁忌吗?如果是这样,还有什么办法可以完成类似的事情?

4

3 回答 3

1

有时您需要这样做。只需确保仅在实际需要时才这样做,因为正如评论者所说,这很容易成为可读性问题。如果要调用的可能函数列表很短,请考虑改用 switch 语句。

于 2012-08-19T22:47:59.550 回答
1

如果您要这样做,您需要确保动态创建的函数名称始终有效,否则您将在运行时遇到致命错误。至少,您应该使用is_callable()来检查该函数是否存在。

于 2012-08-19T22:58:30.833 回答
1

当您将使用限制在某些情况下时,这不是一个坏习惯。其中一种情况可能是基于给定的 GET 参数动态调用函数。

但我建议call_user_func()改用。它清楚地表明了您将要做什么,并且代码更具可读性。请记住始终使用 来检查函数是否存在is_callable()

call_user_func()但不适用于内置函数。

于 2012-08-19T22:58:37.820 回答