什么是PHP单例模式

单例模式,顾名思义单一的实例。

什么叫单例模式又有哪些好处

PHP中每一次new都会开辟出一个新的的对象空间,占用消耗一定的资源。在实际的开发中发现有些类,实际上只需要实例化一次就可以完成所有的操作,就没必要重复实例化消耗资源。这时候就需要通过一些编程技巧使得一个类只能开辟出一个对象空间来节省资源消耗,这就叫单例模式。典型的应用场景就是Mysql的Db类。

怎么实现一个单例模式的类

1、禁止常用的实例化类的方法

禁止通过new、clone、序列化与反序列话实例化类

class Dome
{
    //禁止 new Dome();
    private function __construct()
    {

    }

    //禁止 clone [实例化的类];
    private function __clone()
    {

    }

    //禁止unserialize(serialize([实例化的类]))
    private function __wakeup()
    {

    }
}

2、增加一个公共静态方法进入类的内部并且阻止重复实例化

class Dome
{
    //实例化的类
    private static $instance;

    static function getInstance()
    {
        //防止重复实例化
        if (self::$instance instanceof self) {
            // 实例化类之后赋值给$instance
            static::$instance = new self();
        }
        return static::$instance;
    }

    //禁止 new Dome();
    private function __construct()
    {

    }

    //禁止 clone [实例化的类];
    private function __clone()
    {

    }

    //禁止unserialize(serialize([实例化的类]))
    private function __wakeup()
    {

    }
}

$demo = Dome::getInstance();