怎么在PHP中利用单例模式建立数据库连接

  介绍

怎么在PHP中利用单例模式建立数据库连接?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

<强>一、什么是单例

单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。

<强>二,为什么用单例

实际项目中像数据库查询,日志输出,全局回调,统一校验等模块。这些模块功能单一,但需要多次访问,如果能够全局唯一,多次复用会大大提升性能。这也就是单例存在的必要性。

<强>三、单例模式的好处

1:减少频繁创建,节省了cpu。

2:静态对象公用,节省了内存。

3:功能解耦,代码已维护。

<强>四,如何设计单例

通过上面的描述,单例的核心是,实例一次生成,全局唯一,多次调用。因此在单例模式必须包含三要素:

1:私有化构造函数,私有化克隆。也就是不新,能不能克隆。【唯一】

2:拥有一个静态变量,用于保存当前的类。【唯一如何保存】

3:提供一个公共的访问入口。【可以访问】

<强>五,建立数据库连接

PS:功能上不太完整,以后再补充* * _ * *

/* *   ,*单例模式连接数据库——面向对象   *,*///最后一关键字阻止此类被继承   final  class  sql2   {   static 才能;美元实例;   static 才能;美元连接;   protected 才能;美元的结果;//保护才能关键字阻止此类在外部进行实例化   protected 才能;function  __construct(主机,美元,美元的用户,密码)美元   {才能   ,,,self:: $ connect =, @new  mysqli(主机,美元,美元用户,密码美元);   ,,,if  (self:: $连接→connect_errno), {   ,,,,,死(iconv (& # 39; gbk # 39;,, & # 39; utf - 8 # 39;,, self::连接→美元connect_error),只& # 39;(& # 39;,只自我::连接→美元connect_errno 只& # 39;)& # 39;);   ,,,}   ,,}//保护才能关键字阻止此类在外部进行克隆   protected 才能;function  __clone ()   {才能   ,,}//当才能对象被销毁时关闭连接   function 才能;__destruct ()   {才能   ,,,self:: $连接→关闭();   ,,}//才能获取实例   static 才能;function  getInstance(主机,美元,用户,美元,美元的密码)   {才能   ,,,self:: $ instance =, self:: $ instance 吗?,new 自我(主机,美元,美元的用户,密码美元);   ,,,return 自我::$实例;   ,,}//才能选择数据库   function 才能set_db (db)美元   {才能   ,,,if  (! self:: $连接→select_db (db)美元),{   ,,,,,死(iconv (& # 39; gbk # 39;,, & # 39; utf - 8 # 39;,, self:: $连接→错误),只& # 39;(& # 39;,只自我::连接→美元errno 只& # 39;)& # 39;);   ,,,}   ,,}//才能执行SQL语句   function 才能查询(查询)   {才能   ,,,if  (! (=re 美元;自我::$连接→查询(查询)美元)),{   ,,,,,死(iconv (& # 39; gbk # 39;,, & # 39; utf - 8 # 39;,, self:: $连接→错误),只& # 39;(& # 39;,只自我::连接→美元errno 只& # 39;)& # 39;);   ,,,}   ,,,这个→美元result =,再保险美元;   ,,,return  $再保险;   ,,}//以才能数组形式返回查询结果   function 才能fetch_arr(查询)   {才能   ,,,re 美元;=,$ this→查询(查询);   ,,,res 美元;=,[];   ,,,while  ($ row =,美元重新→fetch_assoc ()), {   ,,,,,res[],美元=,美元行;   ,,,}   ,,,return  res美元;   ,,}//才能获取记录数   function 才能;get_row ()   {才能   ,,,return  $ this→结果→num_rows;   ,,}   }   ins 美元;=,sql2: getInstance(& # 39; 127.0.0.1 # 39;,, & # 39;根# 39;,,& # 39;根# 39;);   ins→美元set_db (& # 39; houtai& # 39;);   美元$ re =, ins→fetch_arr (& # 39; select  *,得到user  & # 39;);//var_dump (re);   ins→美元get_row ();

看完上述内容,你们掌握怎么在PHP中利用单例模式建立数据库连接的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

怎么在PHP中利用单例模式建立数据库连接