php 单例模式 示例

    // 设计模式: 单例模式
    // 作用: 最终只能成功实例化一次对象, 多次实例化还是同一个对象


    // 1. 不让用户在外面new        -- 封装构造方法   私有的/ 受保护的
    // 2. 无法使用构造方法          -- 在类内创建 普通的方法调用构造方法
    // 3. 无法使用普通方法          -- 将 普通方法 定义为 静态方法
    // 4. 在静态方法内不能用$this   -- 在静态方法内 new self
    // 5. 多次调用静态方法重复链接  -- 通过 状态标志 判断是否已连接

    class mysql
    {
        // 链接状态
        private static $status = null;

        private function __construct()
        {
            echo '成功连接数据库... <br>';
        }

        public static function getConnect()
        {
            // 如果$status 是 null, 证明未连接, 则 new self
            // 如果$status 不是 null, 证明已连接, 则直接返回 状态
            if( is_null(self::$status) ){
                self::$status = new self;
            }
            return self::$status;
        }
    }



    // $a = new mysql;  // Fatal error: Uncaught Error: Call to private mysql::__construct()
    // $a = new mysql;
    // $a = new mysql;

    $a = mysql::getConnect();
    $b = mysql::getConnect();

    echo '<hr>';
    if($a == $b){
        echo 'yes';
    }else{
        echo 'no';
    }

猜你喜欢

转载自blog.csdn.net/jxl9910/article/details/80616695