php设计模式之单例模式实例(设计mysqli连接数据的数据处理类)
一直在研究php的设计模式,但是没有亲历使用过,所以还是一知半解,通过几天的学习终于对php的单例设计模式稍稍的有些了解,特此写出一个数据库处理类(只涉及到简单的原理),以便自己以后方便查阅,至于其他设计模式我会慢慢理解,然后会以实例的形式发布到该博客:
/** * 单例模式 */ class Db{ private static $mysqli;//该类中的唯一一个实例 private function __construct(){}//防止在外部实例化该类 private function __clone(){}//禁止通过复制的方式实例化该类 public static function connect(){//数据库连接方法 self::$mysqli = new MySQLi("localhost","root","","test"); self::$mysqli->query("set names utf8"); } public static function select($table){//数据库操作方法,后续可以继续完善和添加...... self::connect(); $result = self::$mysqli->query("select * from ".$table); $result_arr = array(); while($query = $result->fetch_assoc()){ $result_arr[] = $query; } return $result_arr;//结果集以数组的形式返回 } } $result = Db::select("article"); echo '<pre>'; print_r($result); echo '</pre>';
还有第二种写法:如下
class Db{ private static $_instance = null;//该类中的唯一一个实例 private $dbConn; private function __construct(){//防止在外部实例化该类 $this->dbConn = new MySQLi("localhost","root","","test"); $this->dbConn->query("set names utf8"); } private function __clone(){}//禁止通过复制的方式实例化该类 public static function getInstance(){ if(self::$_instance == null){ self::$_instance = new self(); } return self::$_instance; } public function select($table){//数据库操作方法,后续可以继续完善和添加...... $result = $this->dbConn->query("select * from ".$table); $result_arr = array(); while($query = $result->fetch_assoc()){ $result_arr[] = $query; } return $result_arr;//结果集以数组的形式返回 } } $db = Db::getInstance(); $result = $db->select('article'); echo '<pre>'; print_r($result); echo '</pre>';
If the copyright belongs to the longfei, please indicate the source!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?