Zastanawiam się, czy PHP ma jakąkolwiek równoważność z IIFE (Natychmiastowe Wywołanie funkcji), podobnie jak w JavaScript. Czy zamknięcie PHP może być napisane tak, aby działało podobnie do Javascriptu (wywoływanie, zależność, wtrysk, dyrektywa)?IIFE (Natychmiastowe wywołanie funkcji) w PHP?
(function(){
myModule = angular.module('myAngularApplication', []);
}());
Wyrażenie powyżej jest znany jako Natychmiast wywołana ekspresja funkcji (Iife). Ponieważ definicja funkcji będzie się uruchamiać natychmiast po załadowaniu pliku .js. Głównym powodem, dla którego IIFE jest efektywny, jest możliwość natychmiastowego wykonania całego kodu bez konieczności posiadania zmiennych globalnych i funkcji. Teraz, gdy to zrobimy, nasze tworzenie kontrolera zakończy się niepowodzeniem, ponieważ użyliśmy zmiennej globalnej do stworzenia kontrolera z modułem. Aby ominąć ten problem, użyj funkcji getter angular.module, aby powiązać kontroler z modułem. A skoro już jesteśmy przy tym, dlaczego nie umieścić kontrolera w IIFE.
(function() {
var booksController = function ($scope) {
$scope.message = "Hello from booksController";
}
angular.module('myAngularApplication').controller('booksController', booksController);
}());
Źródło: http://www.codeproject.com/Articles/995498/Angular-Tutorial-Part-Understanding-Modules-and Dziękuję.
Kod php nie stawia tego samego priorytetu dla unikania globalnego, co JS, z wielu powodów. – dandavis
Anonimowy wzór IIFE w JS ma zapewniać pewne podobieństwo zmiennych prywatnych (ponieważ zmienne ES5 były jedynie zakresem funkcji). Wzorzec rozwija się do 'function foo() {...}; foo(); 'które można zrobić w dowolnym języku. – ssube
z wyjątkiem tego, że twój IIFE tworzy globalną zmienną. Oo –