我想知道 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 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;
}
};