PHP面向对象的链式调用方式

在ZF里面经常有和jQuery类似的链式的结构代码。

$("p").css("color").addClass("selected");//jQuery
//比如这样jQuery可以连着使用2个方法。在ZF中也有发现类似的链式
$this->_plugins->setRequest($this->_request)->setResponse($this->_response);

于是就跟进了函数,发现实现起来也还蛮简单的。只需要在每个方法最后返回$this

下面是一个例子。

<?php
class wc
{
    public function __construct($who){
        echo "{$who}准备去上厕所了<br/>";
    }

    public function go(){
        echo "1.跑出了教室<br/>";
        return $this;
    }

    public function action(){
        echo "2.到了厕所,开始尿尿<br/>";
        return $this;
    }

    public function back(){
        echo "3.尿尿结束,回到教室";
        return $this;
    }
}

$xm = new wc("小明");
$xm->go()->action()->back();

/* 执行结果:
小明准备去上厕所了
1.跑出了教室
2.到了厕所,开始尿尿
3.尿尿结束,回到了教室
*/

当然这里也只是单纯实现了功能,至于其他的因素这里并没有考虑。

发表评论

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