对于单例模式,首先说一下好处:
单例模式通俗的来说就是在PHP的类实例化中,他的实例化对象是唯一的。
使用单例模式首先需要满足以下3点:
1. 它们必须拥有一个构造函数,并且必须被标记为private
2. 它们拥有一个保存类的实例的静态成员变量
3. 它们拥有一个访问这个实例的公共的静态方法
实例:
<?php
/**
* 单例模式
*/
class Demo
{
// 1.静态私有属性,保存当前类的实例
private static $instance = null;
// 2.构造方法私有化,禁止new实例
private function __construct()
{
# code...
}
// 3.克隆方法私有化,禁止外部克隆
private function __clone()
{
// TODO:Implement __clone() methed.
}
// 4.生成当前类的唯一实例
public static function getInstance()
{
// 首先进行判断,如果不是当前类的实例,那么实例化当前类创建新的实例
if(!self::$instance instanceof self)
{
self::$instance = new self();
}
return self::$instance;
}
}
$db = Demo::getInstance();
/*$dc = new Demo();*/
var_dump($db);
?>
单例类不能再其它类中直接实例化,只能被其自身实例化。它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用。