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

时间:2016-01-27 17:44:04

标签: javascript php angularjs

我想知道PHP是否具有类似于Javascript的IIFE(立即调用函数表达式)的任何等价无论如何都可以编写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 谢谢。

1 个答案:

答案 0 :(得分:19)

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

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

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

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