单例模式
# 概念
单例模式: 一个类只能实例化一次, 当其再次实例化时, 返回第一次实例化的对象, 可以节省资源
# 应用场景
DB类、Cache类、配置类等的实例化
# 实现(三私一公)
私有的构造方法 (限制只能类内部实例化, 防止类外部实例化)
私有的克隆方法 (防止通过克隆生成对象)
私有的静态属性 (保存类的实例)
公有的静态方法
(提供实例, 实例化前先判断该类是否已经被实例化, 若是则返回实例化对象, 若不是则实例化对象并将该对象保存在类的静态属性中)
代码
<?php
class Single
{
private static $instance;
private function __clone() {}
private function __construct() {}
public static function getInstance() {
if (self::$instance === NULL) self::$instance = new self();
return self::$instance;
}
}
$obj1 = Single::getInstance();
$obj2 = Single::getInstance();
// 用 === 可以判断两个变量是否指向同一个对象
var_dump($obj1 === $obj2);
运行结果
bool(true)