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

来源:5-4 Laravel中的错误与日志

慕粉080824269

2017-02-24 16:24

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

写回答 关注

2回答

  • pardon110
    2017-09-04 20:20:52
    已采纳

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

    详情参阅

    慕粉0808...

    谢谢,很详细。后来仔细研究找到所继承arrayaccess这个地方了

    2017-09-04 20:27:33

    共 1 条回复 >

  • wsure007
    2017-03-20 16:41:38

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

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

轻松学会Laravel-高级篇

Laravel框架高级教程,介绍Laravel提供的工具和功能,快来体验

35277 学习 · 138 问题

查看课程

相似问题