這篇文章主要介紹了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; }}
<?phprequire ('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();?>
在使用了鏈式寫法後,代碼會更簡潔,更酷,也希望小夥伴能更好的去運用它。