请问在核心laravel\framework\src\Illuminate\Foundation\Application.php文件中$this怎么可以当数组用和对象用?
php 基础不牢啊,这是因为它的老爸实现了php内置接口ArrayAccess,该接口有以下四个方法offsetExists,offsetGet,offsetSet,offsetUnset 你可以将它当作魔术方法,简单点说,即实现了该接口的类,当你以数组的形式访问对象,会触发offsetGet方法并执行. 它你找application爸container,其内有对应实现方法如下:
/** * Get the value at a given offset. * * @param string $key * @return mixed */ public function offsetGet($key) { return $this->make($key); }
看明白了?
$this['events'] 即 $this->make('events') 亦解析以events为别名类,得到实例
$this 的含义是表示实例化后的具体对象!
我们一般是先声明一个类,然后用这个类去实例化对象!