【发布时间】:2016-01-19 15:10:11
【问题描述】:
我无法理解代码,类似于:-
$this->array[$key]($parameter)
为什么$this->array[$key]后面有($parameter)?
谢谢
【问题讨论】:
我无法理解代码,类似于:-
$this->array[$key]($parameter)
为什么$this->array[$key]后面有($parameter)?
谢谢
【问题讨论】:
供参考,这里引用的代码sn-p是下面一行函数:
/**
* Call a custom driver creator.
*
* @param string $name
* @param array $config
* @return mixed
*/
protected function callCustomCreator($name, array $config)
{
return $this->customCreators[$config['driver']]($this->app, $name, $config);
}
在代码 sn-p 中由$this->customCreators[$config['driver']] 表示的位置所保存的值是function。您通常会像这样调用命名函数:
functionName();
开/关括号告诉 PHP 调用/执行该函数 而不仅仅是 reference 它,这意味着您可以将该函数作为 传递给一个单独的函数em>参数如下:
anotherFunction($this->customCreators[$config['driver']]);
function anotherFunction($creatorFn) {
$creatorFn();
}
PHP added support for lambda-style 函数(PHP 使用术语“匿名”)在 5.3 版中,您可以说我们开始将函数视为 first-class citizens。
【讨论】:
在您引用的代码中,数组包含一个使用指定参数调用的函数。这只是一个普通的函数调用,但函数(或者更确切地说是对它的引用)存储在数组中。
【讨论】:
[] 仅用于将元素推送到数组上。