请问在核心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 的含义是表示实例化后的具体对象!
我们一般是先声明一个类,然后用这个类去实例化对象!