这篇文章主要介绍了PHP实现的链式操作实例。写程序的人都喜欢偷懒,希望少打几行代码,并且让代码看起来很酷。
就好比很多小伙伴在写if…else…的时候会直接使用三元运算符一样。
而用过JS的人应该都见识过js中的链式方法。如 somevars.func().func2()…funcN();这样的写法使得代码更简练,并且作用关系一目了然。
那么在php中可以这么做么,显然也是可以的,但是php与js的差别是,在js中变量本身具有对象的性质,但是php的变量却不是。
现在在很多的PHP的WEB框架中经常会看见链式操作,相信很多同学也使用过,本文将继续以ThinkPHP中的核心类作为实例,给大家讲解一下,需要的朋友可以参考下。
在ThinkPHP核心文件Model.class.php中可以看到这么几段代码(忽略逻辑部分):
class Model { /** * 查询SQL组装 join */ public function join($join) { /* * code */ return $this; } /** * 指定查询条件 支持安全过滤 */ public function where($where){ /* * code */ return $this; } /** * 指定结果顺序 */ public function order($order){ /* * code */ return $this; } /** * 指定查询数量 */ public function limit($limit){ /* * code */ return $this; } /** * 查询数据集 */ public function select() { /* * code */ return $resultSet; } }
join('left join user on oo=xx')->where('id=1')->order('id asc')->limit(10)->select(); /* * 传统写法 */ $model->join('left join user on oo=xx'); $model->where('id=1'); $model->order('id asc'); $model->limit(10); $model->select(); ?>
在使用了链式写法后,代码会更简洁,更酷,也希望小伙伴能更好的去运用它。