PHP – 单例模式

一、概述

保证一个类只实例化一个类对象,进而减少系统开销和资源的浪费。

 

二、代码

<?php
declare(strict_types = 1);

/**
 * 单例模式创建唯一类对象
 * Class SingleObject
 * @package Extend
 */
class SingleObject
{
    // 私有的静态属性,用于存储类对象
    private static $instance = null;

    // 私有的构造方法,保证不允许在类外 new
    private function __construct(){}

    // 私有的克隆方法, 确保不允许通过在类外 clone 来创建新对象
    private function __clone(){}

    // 公有的静态方法,用来实例化唯一当前类对象
    public static function getInstance()
    {
        if(is_null(self::$instance)){
            self::$instance = new self;
        }
        return self::$instance;
    }

}

$obj = singleObject::getInstance();
$obj2 = singleObject::getInstance();
var_dump($obj, $obj2);//从结果可以看出,两个实例化的对象其实是一个对象