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

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

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

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

  • Функция Doctrine 2 Query Builder abs Функция
  • Использовать данные сеанса по рукопожатию websocket
  • mysqli_fetch_array () / mysqli_fetch_assoc () / mysqli_fetch_row () ожидает, что параметр 1 будет ресурсом или mysqli_result, boolean given
  • Массивы POST, не отображающие отмеченные флажки
  • Избегание рекурсии с объектами Doctrine и JMSserializer
  • Может ли пользователь изменить значение $ _SESSION в PHP?
  • 7 Solutions collect form web for “Как немедленно выполнить анонимную функцию в 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(); ?> 
    PHP is the Best Programming Language in the world.