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

2022-08-30 19:44:16

我想知道PHP是否像Javascript那样具有IIFE(立即调用的函数表达式)的等效性PHP闭包可以以任何方式编写,以便它可以类似于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

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

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

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

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

答案 2