代码改变世界

使用单例模式创建数据库连接对象

2020-07-19 16:13  idea555  阅读(302)  评论(0)    收藏  举报
<?php
    class Mysql{
        //该属性用来保存实例
        private static $conn;
        // 私有的构造函数,防止在类外创建对象
        private function __construct(){
            self::$conn = mysqli_connect('localhost','root','root');
        }
        // 公共的创建对象的方法,如果不存在一个这个类的实例属性,就创建一个,否则就取这个实例属性。
        public static function getInstance(){
            if(!(self::$conn instanceof self)){
                self::$conn = new self;
            }
            return self::$conn;
        }
        // 私有的克隆方法,防止在类外 clone 对象
        public function __clone(){}
        //防止反序列化后创建对象
        private function __wakeup(){
            trigger_error('Unserialized is not allowed !');
        }
    }
    //只能这样取得实例,不能 new 和 clone
    $obj1 = Mysql::getInstance();
    $obj2 = Mysql::getInstance();
    $obj3 = Mysql::getInstance();
    var_dump($obj1, $obj2, $obj3);
?>