PHP链式操作原理
1)第一种方法
<?php /* *类功能:实现数据库的连贯查询操作 */ class mysql_query{ var $tbl=’user’;//要操作的表名 var $limit=”;//存储limit语句的变量 var $order=”;//存储order语句的变量 var $sql=”;//存储完整sql语句的变量 function limit($str) { $this->limit=’limit ‘.$str;//设置limit语句 //返回对类自身的引用,这里不能使用return new mysql_qery(), //因为这样相当于又创建了类的一个新实例,那么上一步设置的limit语句,在新实例中是不存在的 //大家可以自己实验 //因此要返回$this,即当前类的实例 return $this; } function order($str) { $this->order=’order by ‘.$str;//设置order语句 return $this;//返回对类自身的引用 } function findall() { $this->sql=’select * from ‘.$this->tbl.’ ‘.$this->order.’ ‘.$this->limit;//拼接sql语句 echo $this->sql;//输出,由于是示例,所以没有写查询数据库的代码 } } //Example $mysqlDb=new mysql_query(); $result = $mysqlDb->limit(’0,10′)->order(‘id desc’)->findall(); print_r($result);
2)php __call()方法实现数据库连贯操作
<?php namespace Config; // 使用__call()方法来实现数据库连贯操作 // 申明一个Db类(数据库操作类)的简单操作模型 class LinkAction { private $sql = array( "field" => "", "where" => "", "order" => "", "limit" => "", "group" => "", "having" => "", ); // 连贯操作调用field() where() order() limit() group() having()方法,组合sql语句 function __call($methodName,$args) { // 将第一个参数(代表不存在方法的方法名称),全部转成小写方式,获取方法名称 $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 user {$this->sql['where']} {$this->sql['order']} {$this->sql['limit']} {$this->sql['group']} {$this->sql['having']}"; } } $db = new LinkAction(); // 连贯操作 $db->field('sex, count(sex)') ->where('where sex in ("男","女")') ->group('group by sex') ->having('having avg(age) > 25') ->select();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)