数据库连接的单例模式案例,确保只会产生一个数据库连接对象

Original 2019-03-19 15:24:52 263
abstract:<?php //单例模式--数据库连接 class Singleton {     /**      * 1)静态变量,保存全局实例,跟类绑定,跟对象无关      * 2)私有属性,为了避免类外直接调用 类名:
<?php

//单例模式--数据库连接
class Singleton
{
    /**
     * 1)静态变量,保存全局实例,跟类绑定,跟对象无关
     * 2)私有属性,为了避免类外直接调用 类名::$instance,防止为空
     */
    private static $instance;
    private $host;//主机
    private $user;//用户
    private $pass;//密码
    private $dbname;//数据库名
    /**
     * Description:数据库连接句柄
     */
    private $db;

    /**
     * 私有化构造函数,防止外界实例化对象
     */
    private function __construct($host, $user, $pass, $dbname)
    {
        $this->db = new mysqli($host, $user, $pass, $dbname) or die(mysql_errno());
    }

    /**
     * 私有化克隆函数,防止外界克隆对象
     */
    private function __clone()
    {
    }

    /**
     * 静态方法,单例访问统一入口
     * @return Singleton:返回应用中的唯一对象实例
     */
    public static function GetInstance($host, $user, $pass, $dbname)
    {
        if (!(self::$instance instanceof self)) {
            self::$instance = new self($host, $user, $pass, $dbname);
        }
        return self::$instance;
    }

    /**
     * 获取数据库的私有方法的连接句柄
     */
    public function GetDbConnect()
    {
        return $this->db;
    }
}

$db = Singleton::GetInstance('127.0.0.1', 'root', '', 'test');


Correcting teacher:天蓬老师Correction time:2019-03-19 15:44:20
Teacher's summary:以后要注意: GetDbConnect() 这样的方法名称, 是不符合规范的, 首字母应该小写, 除了类外, 其它的标识符, 首字母都不要大写

Release Notes

Popular Entries