在条件中使用变量名作为函数名是不好的做法吗?

时间:2012-08-19 22:44:24

标签: php

示例:

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

那被认为是一个大胖子禁忌吗?如果是这样,那么如何才能完成类似的事情呢?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

当您将使用限制在某些情况时,这不是一种不好的做法。其中一种情况可能是根据给定的GET参数动态调用函数。

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

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