PHP连贯接口
浏览:6522次 出处信息
什么是连贯接口?经常用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也同样能实现自动提示。
建议继续学习:
- Paypal接口详细代码(PHP版,非API接口) (阅读:18503)
- 面向“接口”编程和面向“实现”编程 (阅读:12731)
- 存储基础知识之——硬盘接口简述 (阅读:6385)
- JavaScript Interface 接口的实现 (阅读:5958)
- 干嘛不去掉“I”和“Impl”? (阅读:5820)
- 使用Mitmproxy分析接口 (阅读:5807)
- 接口设计规则一:让你的接口会说话 (阅读:3671)
- 以用户为中心的 API 异常设计 (阅读:2536)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
后一篇:如何查看Optimizer版本 >>
文章信息
- 作者:RayChou 来源: 周帆的web实验室
- 标签: 接口 连贯
- 发布时间:2009-11-04 09:10:56
建议继续学习
近3天十大热文
-
[84] memory prefetch浅析
-
[53] 基本排序算法的PHP实现
-
[51] 深入浅出cassandra 4 数据一致性问
-
[49] 转载:cassandra读写性能原理分析
-
[43] MySQL半同步存在的问题
-
[41] 字符引用和空白字符
-
[41] javascript插入样式
-
[40] Inline Form Labels
-
[39] JS中如何判断字符串类型的数字
-
[38] 获取Dom元素的X/Y坐标