我如何立即在PHP中执行匿名函数?

在JavaScript中,您可以定义立即执行的匿名函数:

(function () { /* do something */ })() 

你可以在PHP中做这样的事吗?

对于PHP7:见大冢康夫的回答 : (function() {echo 'Hi';})(); echo'Hi (function() {echo 'Hi';})();

对于以前的版本:立即执行它们的唯一方法是我能想到的是

 call_user_func(function() { echo 'executed'; }); 

PHP 7是做同样的JavaScript

 $gen = (function() { yield 1; yield 2; return 3; })(); foreach ($gen as $val) { echo $val, PHP_EOL; } echo $gen->getReturn(), PHP_EOL; 

输出是:

 1 2 3 

那么当然你可以使用call_user_func ,但还有一个非常简单的select:

 <?php // we simply need to write a simple function called run: function run($f){ $f(); } // and then we can use it like this: run(function(){ echo "do something"; }); ?> 

这对于PHP 7.0或更高版本来说是最简单的。

 php -r '(function() {echo 'Hi';})();' 

这意味着创build闭包,然后通过“()”作为函数调用它。 像JS一样工作,感谢统一的variables评估顺序。

https://3v4l.org/06EL3

 (new ReflectionFunction(function() { // body function }))->invoke(); 

我用这种方法试了一下,但是比使用任何允许你首先定义函数的操作符(或者函数)的答案要复杂得多。

  $value = $hack == ($hack = function(){ // just a hack way of executing an anonymous function return array(0, 1, 2, 3); }) ? $hack() : $hack(); 

不立即执行,但接近;)

 <?php $var = (function(){ echo 'do something'; }); $var(); ?>