技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> PHP --> PHP连贯接口

PHP连贯接口

浏览:6364次  出处信息

    什么是连贯接口?经常用jQuery的朋友一定对下面的代码非常熟悉:

以下是代码片段:
$(’div’).find(’element’).hide();

    像上面这样,在一个方法后直接调用另一个同级方法,我们习惯上称其连贯接口。

    连贯接口有什么好处呢?拿我们常用的工厂模式来举例:

以下是代码片段:
$sql= new Joy_Db_SqlBuilder();
$sql->select();
$sql->table(’test’);
$sql->where(’id’ , ’=’ , ’1’);

    换成连贯接口来实现的代码会是怎样呢?

以下是代码片段:
$sql= new Joy_Db_SqlBuilder();
$sql->select()
    ->table(’test’)
    ->where(’id’ , ’=’ , ’1’);

    可以看到在上面的代码中,相对以往的工厂模式的写法,使用连贯接口能稍微节省一些代码量,并且,代码逻辑性也更强。

    如何实现连贯接口呢?这里我引用JoyPHP中的一段代码

以下是代码片段:
class Joy_Db_SqlBuilder {
    /**
     * select方法
     * 
     * @return Joy_Db_SqlBuilder
     */
    public function select() {
        $this->_args    = array(’method’=>’select’);
        return $this;
    }
    /**
     * 定义所用的表名
     *
     * @param string $name
     * @param string $alias
     * @return Joy_Db_SqlBuilder|string
     */
    public function table() {                
        // @todo something
 
        // 返回this,实现连贯接口
        return $this;
    }
}

    从代码中可以看到,每个方法都返回了$this,而$this表示的正式Joy_Db_SqlBuilder的实例,因此才可以继续调用其方法。

    连贯接口很简单,写起来也很美,但是却遇到一个棘手的问题,类似ZendStudio,Eclipse之类的IDE似乎并不支持连贯接口的自动提示?其实结局的方法也很简单,只要像上面的代码注释那样,遵循PHPDoc的代码注释规范,在@return后注明返回的对象类型,这些IDE也同样能实现自动提示。

    

建议继续学习:

  1. Paypal接口详细代码(PHP版,非API接口)    (阅读:18360)
  2. 面向“接口”编程和面向“实现”编程    (阅读:12560)
  3. 存储基础知识之——硬盘接口简述    (阅读:6123)
  4. JavaScript Interface 接口的实现    (阅读:5817)
  5. 干嘛不去掉“I”和“Impl”?    (阅读:5671)
  6. 使用Mitmproxy分析接口    (阅读:5343)
  7. 接口设计规则一:让你的接口会说话    (阅读:3520)
  8. 以用户为中心的 API 异常设计    (阅读:2396)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1