单例模式链接数据库

  类的单例模式只须要执行一次数据库链接,能够防止数据库的屡次链接给服务器形成负担php

  PHP示例代码mysql

  

<?php require_once 'config.php'; class DB { protected $host; protected $user; protected $password; protected $dbname; protected $db; protected static $c; //构造函数 初始化 私有 禁止外部调用
    private function __construct($host = DB_DBNAME, $user = DB_USER, $password = DB_PASSWORD, $dbname = DB_NAME) { $this->host = $host; $this->user = $user; $this->password = $password; $this->dbname = $dbname; // 判断数据库是否链接
        if ($this->db) { $this->db = conn(); } } // 链接数据库
    function conn() { $conn = new mysqli($this->host, $this->user, $this->password); if ($conn->connect_error) { echo '数据库链接失败,错误信息:' . $conn->connect_error; } // 选择数据库
        $conn->select_db($this->dbname); // 设置字符集
        $conn->set_charset('utf8'); $this->db = $conn; } // 禁止克隆
    private function __clone() { } // 单例模式
    public static function init(){ // 判断静态变量$c是不是本类的实例化对象
        if(!self::$c instanceof self){ self::$c = new self; } return self::$c; } // 这里写各类对数据库操做的方法,例如增删改查 // 关闭数据库
    function __destruct() { $this->db->close(); } }

  调用方法sql

  

$db = DB::init(); // 下面跟着要调用的操做数据库方法 例如
$res = $db->queryall();
相关文章
相关标签/搜索