CY-Left

PHP开发语言

return $this;$this->x->x();的一些理解 —未完待续

return $this; 的一些理解

在 ThinkPHP 中常见到这种写法.

$res = $this->table($this->common)->where("common_id=0")->select();

一直当作黑匣子没去理解, 今天闲者就看看源码. 发现, table() 和 $this 一样都是 This 对象, table 方法中, 最后结尾是 return $this;

ThinkPHP 调用 table 方法,为其所在类的全局变量赋值(指定哪一个数据表), 然后返回的 $this 是处理过全局变量的类对象, 它再调用的方法, 就能使用之前的全局变量了.

下面附上 table 部分源码:

    public function table($table)
    {
        # 省略一万字 ...
        $this->options['table'] = $table;

        return $this;
    }

上面的 options 就是一个全局变量, 调用 table 后, options 一般都会改变, 设定此时应该操作那个数据表. 继而,返回的 this 对象调用下一个方法, 比如 select(), select 获取 option 的内容, 并执行搜索操作.

然后这里还有一些自己不明白的地方
1. 返回的 $this 对象和 new 生成的对象有不同之处么?
2. 这里和对象拷贝、浅拷贝有什么关联?

本文虽拙,却也系作者劳动,转载还请保留本文链接: http://cyleft.com/?p=590



Have any Question or Comment?

发表评论

电子邮件地址不会被公开。 必填项已用*标注