• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

laravel – 【PHP】return $this

php 搞代码 3年前 (2022-01-26) 30次浏览 已收录 0个评论
文章目录[隐藏]

Laravel里很多 return $this

着实不明白这是什么原理,百度后发现如下比较好的解释:

<code>class sum{    private $num1;    private $num2;    public function num1($n)    {        $this->num1 =$n;        return $this;    }    public function num2($n)    {        $this->num2=$n;        return $this;    }    public function sum()    {        return $this->num1+$this->num2;    }}$sum=new sum();$sum->num1(10)->num2(5)->sum();</code>

三个疑问:
1、
既然num1和num2的设计初衷是方法,为什么开头却要变成它的属性私有呢?

private $num1;
private $num2;
…num1($n)
…num2($n)

2、
$this->num1 = $n

自身的参数值($n)赋值给自身的方法($num1),这是什么原理?有什么用呢?

3、
return $this 这什么技巧,在larval里利用率太高了,脑子转不过来。

可能深夜了,问题太多,脑子很糊,谢谢解答,为感!

睡醒再来看来,真的摸索不出来

回复内容:

Laravel里很多 return $this

着实不明白这是什么原理,百度后发现如下比较好的解释:

<code>class sum{    private $num1;    private $num2;    public function num1($n)    {        $this->num1 =$n;        return $this;    }    public function num2($n)    {        $this->num2=$n;        return $this;    }    public function sum()    {        return $this->num1+$this->num2;    }}$sum=new sum();$sum->num1(10)->num2(5)->sum();</code>

三个疑问:
1、
既然num1和num2的设计初衷是方法,为什么开头却要变成它的属性私有呢?

private $num1;
private $num2;
…num1($n)
…num2($n)

2、
$this->num1 = $n

自身的参数值($n)赋值给自身的方法($num1),这是什么原理?有什么用呢?

3、
return $this 这什么技巧,在larval里利用率太高了,脑子转不过来。

可能深夜了,问题太多,脑子很糊,谢谢解答,为感!

睡醒再来看来,真的摸索不出来

链式操作,具体应用场景像这样

<code>/* * SQL语句组合实例类,始发文章web开发笔记 * 学习用,非专业类 * */class sql{    private $sql=array("from"=>"",            "where"=>"",            "order"=>"",            "limit"=>"");    public function from($tableName) {        $this->sql["from"]="FROM ".$tableName;        return $this;    }    public function <b>6本文来源gao@dai!ma.com搞$代^码!网7</b><pre>搞gaodaima代码

where($_where=’1=1′) { $this->sql[“where”]=”WHERE “.$_where; return $this; } public function order($_order=’id DESC’) { $this->sql[“order”]=”ORDER BY “.$_order; return $this; } public function limit($_limit=’30’) { $this->sql[“limit”]=”LIMIT 0,”.$_limit; return $this; } public function select($_select=’*’) { return “SELECT “.$_select.” “.(implode(” “,$this->sql)); }}$sql =new sql();echo $sql->from(“testTable”)->where(“id=1”)->order(“id DESC”)->limit(10)->select();//输出 SELECT * FROM testTable WHERE id=1 ORDER BY id DESC LIMIT 0,10

1、属性设计为私有是防止外部直接通过属性赋值来修改其值。只有通过暴露的公用方法来赋值。

2、对类的属性进行赋值操作。

3、实现环形调用。$sum->num1(10) 对 $sum 对象的num1进行赋值,执行完成后返回结果是当前 $sum 对象,然后再调用 num2(5) 方法对num2 进行复制,同时返回当前的$sum 对象,最后调用 $sum 对象的sum方法。

返回this可以实现类似于JavaScript的链式调用

举个栗子:

<code>$object = new ClassName();$object->method1();$object->method2();$object->method3();</code>

这种方法想写成:

<code>$object->method1()->method2()->method3();</code>

那么 method1,method2,method2 里就必需返回 $object,在 method* $object 是什么?就是 $this 啊。

现在你看看,method1 里面为什么会有 method2 方法,因为 method1 返回了 $object 啊!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:laravel – 【PHP】return $this

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址