zoukankan      html  css  js  c++  java
  • 使用单例模式建立一个数据库连接简单示例

    <?php
    /*
     *describe:单例模式 数据库类
    单例模式的必要条件
    (1)私有的构造方法-为了防止在类外使用new关键字实例化对象
    (2)私有的成员属性-为了防止在类外引入这个存放对象的属性
    (3)私有的克隆方法-为了防止在类外通过clone成生另一个对象
    (4)公有的静态方法-为了让用户进行实例化对象的操作
    */
    header("content-type:text/html;charset=utf-8");
    
    class DbSingleton
    {
        private $charset = "utf8";         //字符串编码
    
        //私有的成员属性-为了防止在类外引入这个存放对象的属性
        private static $instance = NULL;   //存储对象
    
        //私有的构造方法-为了防止在类外使用new关键字实例化对象
        private function __construct($host, $username, $password, $dbname, $port)
        {
            $link = mysqli_connect($host, $username, $password, $dbname, $port);
            if (!$link) {
                die("连接错误: " . mysqli_connect_error());
            }
            // 修改数据库连接字符集为 utf8
            mysqli_set_charset($link, $this->charset);
            return $link;
        }
    
        //私有的克隆方法-为了防止在类外通过clone成生另一个对象
        private function __clone()
        {
        }
    
        //公有的静态方法-为了让用户进行实例化对象的操作
        public static function getInstance($host, $username, $password, $dbname, $port)
        {
            if (!self::$instance instanceof self) {
                self::$instance = new self($host, $username, $password, $dbname, $port);
            }
            return self::$instance;
        }
    }
    
    //测试:
    //$host     = '127.0.0.1';
    //$username = 'root';
    //$password = '123456';
    //$dbname   = 'test';
    //$port     = 3306;
    //$db = DbSingleton::getInstance($host, $username, $password, $dbname, $port);
    //var_dump($db);
  • 相关阅读:
    Handlebars模板引擎简单使用
    SpringMVC学习笔记001-服务器端获取JSON字符串并解析
    EL表达式的使用
    SpringMVC学习笔记001
    ExtJS学习之路碎碎念
    Microsoft Word 使用技巧总结
    驼峰命名法
    视图生命周期
    git命令
    git的使用1[转]
  • 原文地址:https://www.cnblogs.com/jxl1996/p/10172654.html
Copyright © 2011-2022 走看看