【问题标题】:What does "$this->array[]()" mean? [duplicate]“$this->array[]()”是什么意思? [复制]
【发布时间】:2016-01-19 15:10:11
【问题描述】:

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

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

谢谢

【问题讨论】:

标签: php arrays function


【解决方案1】:

供参考,这里引用的代码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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 从技术上讲,提供的示例 OP 实际上不起作用,因为 [] 仅用于将元素推送到数组上。
    • 是的,他在问题中发布的代码行不起作用。我指的是他发布的 GitHub 链接。
    猜你喜欢
    • 2012-05-04
    • 1970-01-01
    • 2017-07-09
    • 2020-10-04
    • 2011-05-10
    • 2011-05-06
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多