将常量称为函数名称?

Pur*_*ari 6 php constants function

(请在告诉我任何新方法之前先阅读整个问题.)

在PHP中,您可以通过在变量中调用其名称来调用函数.

function myfunc(){ echo 'works'; }

$func = 'myfunc';
$func(); // Prints "works"
Run Code Online (Sandbox Code Playgroud)

但是,你不能用常数做到这一点.

define('func', 'myfunc');

func(); // Error: function "func" not defined
Run Code Online (Sandbox Code Playgroud)

有一些解决方法,如下所示:

$f = func;
$f(); // Prints "works"

call_user_func(func); // Prints "works"

function call($f){ $f(); }
call(func); // Prints "works"
Run Code Online (Sandbox Code Playgroud)

PHP文档callable说:

PHP函数的名称作为字符串传递.除语言结构外,可以使用任何内置或用户定义的函数.

似乎没有关于常量值不可调用的内容.

我也尝试检查它,当然,

var_dump(is_callable(func));
Run Code Online (Sandbox Code Playgroud)

打印bool(true).

现在,有没有解释为什么会这样?据我所知,所有的变通方法都依赖于将常量值赋给变量,为什么不能连续调用?

再说一次,为了让它变得非常清晰,我不需要一种调用函数的方法,我甚至在那里提供了一些.我想知道为什么 PHP不允许直接通过常量调用函数.

Vol*_*erK 1

既然您问了原因/原因,我想唯一的答案(可能不会令您满意)是:因为它尚未在https://wiki.php.net/rfc
上提出、讨论和接受。