PHP单例设计模式实例

特点

单例模式是PHP中一种常见的设计模式,主要有以下几个特点:

  1. 单例类只能有一个实例。
  2. 单例类必须自己创建自己的唯一实例。
  3. 单例类必须给所有其他对象提供这一实例。

实现

基于单例模式特点,要实现单例模式非常简单:

  1. 构造方法(__constructor)设为私有(必须自己创建实例,保证不被外部创建)
  2. 关闭clone,关闭serialize(还是为了保证唯一)
  3. 一个静态(static)属性保存实例
  4. 一个静态(static)方法创建实例(因为不能被new,所以只能是静态方法)

看起来已经很严密了,来个实际例子吧

final class Singleton
{
    private static $instance;

    private function __construct()
    {
        // Hide the constructor
    }

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

        return self::$instance;
    }

    private function __clone()
    {
        // Disable cloning
    }

    private function __wakeup()
    {
        // Disable unserialize
    }
}

使用

$singleton1 = Singleton::getInstance();
$singleton2 = Singleton::getInstance();

var_dump($singleton1 === $singleton2); // true

添加新评论