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