IIFE (немедленное выражение функции) в PHP?

Интересно, есть ли в PHP эквивалент IIFE (выражение для немедленного вызова функции), как в Javascript? Может ли PHP Closure быть написан так или иначе, чтобы он мог работать аналогично Javascript (вызов, зависимость, внедрение, директива)?

(function(){
    myModule = angular.module('myAngularApplication', []);
}());

Вышеупомянутое выражение известно как выражение "Немедленно вызванная функция" (IIFE). Поскольку определение функции будет немедленно вызывать себя всякий раз, когда загружается файл.js. Основная причина, по которой IIFE эффективен, заключается в том, что мы можем немедленно выполнить весь код без необходимости иметь глобальные переменные и функции. Теперь, когда мы это сделаем, создание нашего контроллера не удастся, так как мы использовали глобальную переменную для создания контроллера с модулем. Чтобы обойти эту проблему, воспользуемся функцией getter angular.module, чтобы связать контроллер с модулем. И в то время как мы находимся в этом, почему бы не поместить контроллер в IIFE также.

(function () {

    var booksController = function ($scope) {
         $scope.message = "Hello from booksController";
    }

    angular.module('myAngularApplication').controller('booksController', booksController); 
}());

Источник: http://www.codeproject.com/Articles/995498/Angular-Tutorial-Part-Understanding-Modules-and Спасибо.

2 ответа

В PHP 7, да, вы можете:

(function() { echo "yes, this works in PHP 7.\n"; })();

Это не работает в PHP 5.x. Вместо этого ближе всего вы можете прийти:

call_user_func(function() { echo "this works too\n"; });

Вы также можете сразу вызвать анонимный класс в php.

      <?php new class (0,1) {
  public function __construct (int $a, int $b) {

    (($a < 1) ? 'var_dump' : 'var_export')(
      gettype (($b > 0) ? __FUNCTION__ 
        : (($a > 0) ? microtime (true) 
        : __LINE__
    )))&exit;
    
  }
};
Другие вопросы по тегам