(请告诉我,任何新的方式来做到这一点之前阅读整个问题。)作为函数名称调用常量?
在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文件说:
A PHP function is passed by its name as a string. Any built-in or user-defined function can be used, except language constructs.
人们似乎一无所知不是可调用的恒定值。
我也试着检查一下吧,当然,
var_dump(is_callable(func));
打印bool(true)
。
现在有没有解释为什么这样呢?就我所见,所有的解决方法都依赖于将常量值赋给变量,为什么不能调用常量?
而且,为了让它更加清晰,我不需要调用函数的方法,我甚至在那里提出了一些方法。我想知道为什么 PHP不允许通过常量直接调用函数。
也许这清除了一些东西:http://stackoverflow.com/questions/9925176/php-define-a-constant-function-call – MisterBla
@RichardA是的,我读了这个问题,但相比那个问题我的问题是为什么不把'func'定义为'“mysql_error”'并调用'func()'工作。 – Pietu1998
我想这就是PHP的工作原理。当你做'func()',PHP期望一个叫做func的函数,尽管func是可调用的。我能够给你的最好的答案是“你不能把一个常量作为一个函数调用,没有解决方法”。 – MisterBla