PHP coherent operation implementation
We often use code like this when coding using some frameworks (such as ThinkPHP).
M('User')->where(array('id'=>1))->field('name')->select();
This is not only conducive to coding, but also makes people "feel happy". Okay, no more to say. Let’s see how it’s done?
//Database operation base class [PS: Main function coherent function implementation]
class Db{
//This attribute defines the method name to implement coherent operations
public $sql = array(
"field" => "",
"where" => "",
"order" => "",
"limit" => "",
"group" => "",
"having" => "",
);
/**
* For consecutive operations, call the field() where() order() limit() group() having() method and combine it into a sql statement
* This method is a PHP magic method. This method will be automatically called when calling a method that does not exist in the class
* @param $methodName When calling a non-existent method, receive the string of this method name
* @param $args When calling a method that does not exist, receive the parameters of this method in the form of an array
*/
function __call($methodName,$args){
//Convert the requested method name to lowercase
$methodName=strtolower($methodName);
//If the request method name corresponds to the subscript of the member attribute array $sql; then assign the second parameter to the "element corresponding to the subscript" in the array
if(isset($this->sql[$methodName])){
$this->sql[$methodName]=$args[0];
}else{
echo 'The '.$methodName.'() method in the calling class '.get_class($this).' does not exist';
}
//Return the object; so that you can continue to call methods in this object to form a coherent operation
return $this;
}
/**
* Use this method to splice into a select sql statement; [PS: This method terminates the continuous operation and is placed at the end of the continuous operation]
*/
function select(){
//Splice sql string according to select syntax [PS: You can execute "help select;" in the mysql command line to view its syntax structure]
$sql="SELECT {$this->sql['field']} FROM test {$this->sql['where']} {$this->sql['group']} {$this- >sql['having']} {$this->sql['order']} {$this->sql['limit']}";
echo $sql;
}
}
$obj=new db();
$obj->field('name,sex,address')->where('where name="guoyu"')->limit('limit 1')->select();
//Output: SELECT name,sex,address FROM test where name=guoyulimit 1
http://www.bkjia.com/PHPjc/986703.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/986703.htmlTechArticlephp coherent operation implementation When we use some frameworks (such as ThinkPHP) to code, we often use such code. M(User)-where(array(id=1))-field(name)-select(); This is not only conducive to coding...