這篇文章主要介紹了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; } }
<?php require ('Model.class.php'); $model = new Model(); /* * 鏈式操作寫法 */ $model->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(); ?>
在使用了鏈式寫法後,代碼會更簡潔,更酷,也希望小伙伴能更好的去運用它。