PHP中的IIFE(立即调用函数表达式)?

Pri*_*lio 10 javascript php angularjs

我想知道PHP是否具有与Javascript 相同的IIFE(立即调用函数表达式).是否可以编写PHP Closure,以便它可以与Javascript(调用,依赖,注入,指令)类似地工作?

(function(){
    myModule = angular.module('myAngularApplication', []);
}());
Run Code Online (Sandbox Code Playgroud)

上面的表达式称为立即调用函数表达式(IIFE).由于函数定义将在加载.js文件时立即调用.IIFE有效的主要原因是我们可以立即执行所有代码而无需具有全局变量和函数.现在,当我们这样做时,我们的控制器创建将失败,因为我们使用全局变量来创建模块的控制器.为避免此问题,我们可以使用getter函数angular.module将控制器与模块相关联.虽然我们在这,但为什么不把控制器也放在IIFE中.

(function () {

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

    angular.module('myAngularApplication').controller('booksController', booksController); 
}());
Run Code Online (Sandbox Code Playgroud)

资料来源:http://www.codeproject.com/Articles/995498/Angular-Tutorial-Part-Understanding-Modules- 谢谢.

jba*_*ord 24

在PHP 7中,是的,您可以:

(function() { echo "yes, this works in PHP 7.\n"; })();
Run Code Online (Sandbox Code Playgroud)

这在PHP 5.x中不起作用.相反,你最接近的是:

call_user_func(function() { echo "this works too\n"; });
Run Code Online (Sandbox Code Playgroud)

  • 它可以防止意外使用全局变量,所以是的,这通常是一个好主意——尽管 PHP 的正式命名空间机制可能会最大限度地减少这种需求。 (2认同)