在PHP中,您可以通过在变量内调用它们的名称来调用函数。
但是,您不能使用常量来实现这一点。
function myfunc(){ echo 'works'; }
$func = 'myfunc';
$func(); // Prints "works"
但是,您不能使用常量来实现这一点。
define('func', 'myfunc');
func(); // Error: function "func" not defined
有一些变通方法,比如这些:
$f = func;
$f(); // Prints "works"
call_user_func(func); // Prints "works"
function call($f){ $f(); }
call(func); // Prints "works"
关于 callable
的 PHP 文档指出:
PHP 函数以字符串形式传递其名称。 任何内置或用户定义的函数均可使用,除了语言结构。
似乎没有提到常量值不可调用。
我也尝试过检查它,当然,
var_dump(is_callable(func));
打印输出结果为bool(true)
。
现在,为什么会是这样呢?据我所知,所有的解决方法都依赖于将常量值分配给变量,但为什么不能直接调用常量呢?
再次强调,我不需要调用函数的方法,我已经提供了一些。我想知道的是为什么 PHP 不允许通过常量直接调用函数。
func
定义为"mysql_error"
并调用func()
不起作用。 - PurkkaKoodarieval
是有害的。 - MisterBla