为了账号安全,请及时绑定邮箱和手机立即绑定

请问在核心文件\Foundation\Application.php中$this怎么可以当数组用和对象用?

请问在核心laravel\framework\src\Illuminate\Foundation\Application.php文件中$this怎么可以当数组用和对象用?
58afed4d00019a3c08810291.jpg

正在回答

2 回答

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为别名类,得到实例

详情参阅

1 回复 有任何疑惑可以回复我~
#1

慕粉080824269 提问者

谢谢,很详细。后来仔细研究找到所继承arrayaccess这个地方了
2017-09-04 回复 有任何疑惑可以回复我~

$this 的含义是表示实例化后的具体对象

我们一般是先声明一个类,然后用这个类去实例化对象!

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请问在核心文件\Foundation\Application.php中$this怎么可以当数组用和对象用?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信