单例模式

应用场景:

数据库连接这种比较耗费资源的操作;
我们希望整个应用只实例化一个;

结构:

4私1公;

私有化静态属性: 防止直接访问存储实例的属性
私有化构造方法: 防止使用 new 创建多个实例;
私有化克隆方法: 防止 clone 多个实例;
私有化重建方法: 防止反序列化
公有化方法:提供入口获取实例

<?php

class Mysql 
{
    // 存放实例
    private static $instance = null;

    public static function getInstance()
    {
        if (self::$instance === null) {
            self::$instance = new self();
        }

        return self::$instance;
    }

    /**
     * 防止 new 创建多个实例
     * 报致命错误
     */
    private function __construct()
    {

    }

    /**
     * 防止 clone 多个实例
     * 报致命错误
     */
    private function __clone()
    {

    }

    /**
     * 防止反序列化 生成新的实例
     * 报警告错误,但还是生成了新的实例
     *  Warning:  Invalid callback Mysql::__wakeup, cannot access private method Mysql::__wakeup()
     */
    private function __wakeup()
    {

    }

}

参考文档:https://baijunyao.com/article/159

原文地址:https://www.cnblogs.com/cshaptx4869/p/10422696.html