框架里连贯操作的实现方法
<?php
// 申明一个Db类(数据库操作类)的简单操作模型
class Db{
private $sql = array(
"field" => "",
"table" =>"",
"where" => "",
"order" => "",
"limit" => "",
"group" => "",
"having" => "",
);
// 连贯操作调用field() where() order() limit() group() having()方法,组合sql语句
// __call()方法不存在时触发。$methodName调用的方法名,$args调用的参数(数组形式)
function __call($methodName,$args){
// strtolower将第一个参数(代表不存在方法的方法名称),全部转成小写方式,获取方法名称
$methodName = strtolower($methodName);
// 如果调用的方法名和成员属性数组$sql下标对应上,则将第二个参数给数组中下标对应的元素
if(array_key_exists($methodName,$this->sql)){
$this->sql[$methodName] = $args[0];
}else{
echo '调用类'.get_class($this).'中的方法'.$methodName.'()不存在';
}
// 返回自己对象,则可以继续调用本对象中的方法,形成连贯操作
return $this;
}
// 输出连贯操作后组合输出一个sql语句,是连贯操作最后的一个方法。{}大括号表示代码块
function select(){
echo "SELECT {$this->sql['field']} FROM {$this->sql['table']}
{$this->sql['where']} {$this->sql['order']} {$this->sql['limit']}
{$this->sql['group']} {$this->sql['having']}";
}
}
$db = new Db();
// 连贯操作
$db->table('user')->field('sex, count(sex)')->where('where sex in ("男","女")')
->group('group by sex')->having('having avg(age) > 25')->select();
?>
--------------------------------------------------------------------
承接网站开发、小程序开发、app开发、商城开发、公众号开发。
百度SEO排名、百度搜索霸屏、软文代写等业务。
联系QQ:2779459018 联系微信:qianxia39