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

IIFE (Immediately Invoked Function Expression) in PHP?

本文关键字:函数 表达式 调用 中的 IIFE PHP      更新时间:2023-09-26

我想知道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谢谢。

在 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;
    
  }
};