Laravel的app()容器类魔术__get带括号

时间:2017-08-21 16:01:58

标签: php laravel class

通过调试$x = app()->resolved;中的laravel,我得到了这个神奇的方法

public function __get($key)
    {
        return $this[$key];
    }
Illuminate\Container\Container

中的

我想了解这一点,但我无法弄清楚这是做什么的。

什么是return $this[$key];?像这样的$this[$key]是键控数组

我了解$this->xxx正在获取this个实例的$ xxx属性。

但是$this[$key]是什么?

为什么在代码中执行的下一行是

public function offsetGet($key)
    {
        return $this->make($key);
    }

即使现在正在进行调整并思考

,也无法理解并理解

1 个答案:

答案 0 :(得分:2)

[]

一起使用时,任何实现ArrayAccess的类都可以像数组一样运行

假设:

 class MyArrayAccessibleClass implements \ArrayAccess { }
 $class = new MyArrayAccessibleClass();

以下对是等价的:

$variable =  $class["index"]
$variable = $class->offsetGet("index");

$class["index"] = $value;
$class->offsetSet("index",$value);

isset($class["index"]);
$class->offsetExists("index");

unset($class["index"]);
$class->offsetUnset("index");

特别是laravel Application扩展Container实现ArrayAccess