'后面跟方括号'用PHP表示?

时间:2017-08-15 14:15:53

标签: php

我在Laravel中找到了一个代码块,如下所示:

/**
 * Register a "before" application filter.
 *
 * @param  \Closure|string  $callback
 * @return void
 */
public function before($callback)
{
    return $this['router']->before($callback);
}

$this['router']在这里意味着什么?任何人都可以解释$this['xx']表格吗?它是一个数组吗?

3 个答案:

答案 0 :(得分:4)

您的变量被称为$this这一事实意味着它不能是一个普通的数组 - 该变量名是为一个类的当前实例保留的。

使用方括号访问对象是该类实现ArrayAccess接口的标志 - 也就是说,可以使用通常为基本数组保留的运算符来访问它。

使用方括号表示法从实现ArrayAccess的类中检索值将调用类的offsetGet方法,并将提供的键作为$offset参数。最常见的用法是允许访问类的成员变量,但类本身可以选择在此方法中执行任何操作。

在您的情况下,我认为您正在查看Laravel应用程序类,这将导致从依赖项注入容器返回 router 项。

答案 1 :(得分:2)

$this['router']对laravel服务容器中的路由器服务的引用。 服务容器(或依赖注入容器)只是一个PHP对象,它管理服务(即对象)的实例化。

见: What is the concept of Service Container in Laravel?

答案 2 :(得分:1)

它只是意味着它是一个数组。您可以使用方括号,使用键(可以是名称(字符串,用引号括起来)或数字)来标识数组中的正确值。

在您的代码中,$this['router']指的是您正在查看的类中包含的数组,这是用于选择所需内容的标识符,router是关键字。