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

问题描述 投票:0回答:2

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

php iife
2个回答
55
投票

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

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

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

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

1
投票

您还可以立即调用 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;
    
  }
};
© www.soinside.com 2019 - 2024. All rights reserved.