“$this->array[]()”是什么意思


What does "$this->array[]()" mean?

我无法理解代码,就像:- $this->array[$key]($parameter)

为什么$this->array[$key]之后会有($parameter)

谢谢

作为参考,这里引用的代码片段是以下单行函数:

/**
 * 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);
}
在该

代码段中由 $this->customCreators[$config['driver']] 表示的位置保存的值是一个function。 您通常调用如下所示的命名函数:

functionName();

左/右括号告诉 PHP 调用/执行该函数,而不仅仅是引用它,这意味着您可以将该函数作为参数传递给单独的函数,如下所示:

anotherFunction($this->customCreators[$config['driver']]);
function anotherFunction($creatorFn) {
    $creatorFn();
}
PHP

在 5.3 版中添加了对 lambda 样式函数的支持(PHP 使用术语"匿名"),这时你可以说我们开始将函数视为一等公民。

在您引用的代码中,数组包含一个使用指定参数调用的函数。它只是一个常规的函数调用,但函数(或者更确切地说是对它的引用)存储在数组中。