在条件中使用变量名作为函数名是不是一种糟糕的做法


Is it bad practice to use variable names as function names in conditions?

示例:

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

这被认为是一个很大的"不"吗?如果是这样的话,一个人怎么能完成类似的事情呢?

当您将用法限制在某些情况下时,这并不是一种糟糕的做法。其中一种情况可能是基于给定的GET参数动态调用函数。

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

call_user_func()将无法使用内置功能。

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

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