【发布时间】:2016-04-13 23:18:51
【问题描述】:
在 JavaScript 中,你可以这样做:
var Module = (function () {
var functions = [method1, method2]; // array of functions to execute
function method1 () {
console.log('calling method1');
}
function method2 () {
console.log('calling method2');
}
function method3 () {
console.log('calling method3'); // not called
}
function add (fn) {
functions.push(fn); // add new function to the array
}
function printt () {
for (var i in functions) functions[i](); // execute functions in the array
}
return {
add: add,
printt: printt
};
})();
Module.add(function () {
console.log('calling anonymous function');
});
Module.printt();
// calling method1
// calling method2
// calling anonymous function
是否可以在 PHP 中做类似的事情,其中要执行的 (1) 方法存储在数组 (2) 中,并且可以添加新的函数/方法数组,这样当printt方法运行时,它会执行数组中的所有函数?
class Module {
protected $functions = [];
public function __construct () {
// ?
}
protected function method1 () {
echo 'calling method1';
}
protected function method2 () {
echo 'calling method2';
}
protected function method3 () {
echo 'calling method3';
}
public function add ($fn) {
$this->functions[] = $fn;
}
public function printt () {
foreach ($this->functions as $fn) $fn();
}
}
$module = new Module();
$module->add(function () {
echo 'calling anonymous function';
});
$module->printt();
【问题讨论】:
-
PHP 有闭包吗?
-
我相信根据这个页面Anonymous functions。
-
哇。我不知道。不错
标签: javascript php function methods