Как немедленно выполнить анонимную функцию в PHP?

В JavaScript вы можете определить анонимные функции, которые выполняются немедленно:

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

Можете ли вы сделать что-то подобное в PHP?

Solutions Collecting From Web of "Как немедленно выполнить анонимную функцию в PHP?"

Для PHP7: см . Ответ Ясуо Огаки : (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 , но есть еще одна довольно простая альтернатива:

 <?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';})();' 

Это означает создание замыкания, а затем называть его функцией, следуя «()». Работает точно так же, как JS благодаря единому порядку оценки переменной.

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(); ?>