PHP实现单例模式建立数据库连接的方法分析

吾爱主题 阅读:130 2021-09-29 13:31:00 评论:0

本文实例讲述了PHP实现单例模式建立数据库连接的方法。分享给大家供大家参考,具体如下:

理解php单例模式

一、什么是单例

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

二、为什么用单例

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

三、单例模式的好处

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

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

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

四、如何设计单例

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

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

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

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

五、建立数据库连接

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

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 /**   * 单例模式连接数据库--面向对象   * */ //final关键字阻止此类被继承 final class sql2 {    static $instance ;    static $connect ;    protected $result ;    //protected关键字阻止此类在外部进行实例化    protected function __construct( $host , $user , $password )    {      self:: $connect = @ new mysqli( $host , $user , $password );      if (self:: $connect ->connect_errno) {        die (iconv( 'gbk' , 'utf-8' , self:: $connect ->connect_error) . '(' . self:: $connect ->connect_errno . ')' );      }    }    //protected关键字阻止此类在外部进行克隆    protected function __clone()    {    }    //当对象被销毁时关闭连接    function __destruct()    {      self:: $connect ->close();    }    //获取实例    static function getInstance( $host , $user , $password )    {      self:: $instance = self:: $instance ?: new self( $host , $user , $password );      return self:: $instance ;    }    //选择数据库    function set_db( $db )    {      if (!self:: $connect ->select_db( $db )) {        die (iconv( 'gbk' , 'utf-8' , self:: $connect ->error) . '(' . self:: $connect ->errno . ')' );      }    }    //执行SQL语句    function query( $query )    {      if (!( $re = self:: $connect ->query( $query ))) {        die (iconv( 'gbk' , 'utf-8' , self:: $connect ->error) . '(' . self:: $connect ->errno . ')' );      }      $this ->result = $re ;      return $re ;    }    //以数组形式返回查询结果    function fetch_arr( $query )    {      $re = $this ->query( $query );      $res = [];      while ( $row = $re ->fetch_assoc()) {        $res [] = $row ;      }      return $res ;    }    //获取记录数    function get_row()    {      return $this ->result->num_rows;    } } $ins = sql2::getInstance( '127.0.0.1' , 'root' , 'root' ); $ins ->set_db( 'houtai' ); $re = $ins ->fetch_arr( 'select * from user ' ); //var_dump($re); $ins ->get_row();

希望本文所述对大家PHP程序设计有所帮助。

原文链接:https://blog.csdn.net/coco1118/article/details/101347908

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容