我们经常在项目中会写到
Mode::find()->where()->orderBy()->limit();
链式调用,那么它是怎么实现的呢?
昨天看韩天峰大佬的视频,学到了 关键点在于类中方法返回的 return $this
我们平常使用的时候
$model = new BaseObject();
$model->where();
$model->limit();
当where 方法中最后返回 $this 的时候我们就可以使用
$model->where()->limit();
代码如下:
<?php
class BaseObject
{
public $where;
public $limit;
function where($condition)
{
$this->where = $condition;
}
function limit($limit)
{
$this->limit = $limit;
}
}
$model = new BaseObject();
$model->where([‘id‘ => 1]);
$model->limit(10);
var_dump($model);
结果为:
object(app\controllers\BaseObject)#1 (2) {
["where"]=>
array(1) {
["id"]=>
int(1)
}
["limit"]=>
int(10)
}
链式调用:
<?php
class BaseObject
{
public $where;
public $limit;
function where($condition)
{
$this->where = $condition;
return $this;
}
function limit($limit)
{
$this->limit = $limit;
return $this;
}
}
$model = new BaseObject();
$model->where([‘id‘ => 1])->limit(10);
var_dump($model);
结果为:
object(BaseObject)#1 (2) {
["where"]=>
array(1) {
["id"]=>
int(1)
}
["limit"]=>
int(10)
}
总结:
-
很多知识点,你如果不去思考,不去学习,你一直还是不会的,要养成独立思考和不断学习的习惯
-
Leary by Practice,看到大佬当年桌面的屏保,通过实践学习,自己还是动手太少,一直停留在想的阶段,所以这个阶段多写代码,多做事