申请一个私有的静态成员变量来保存该类的唯一实例
声明私有的构造方法,防止类外部创建对象
声明一个静态公共方法,供外部获取唯一实例
这三步走完,就是一个单例了,但是这个单例是不安全的,想要这个单例安全,还需以下两步(如有不完善还请补充)
声明私有的克隆方法,防止对象被克隆
重写__sleep方法,将返回置空,防止序列化反序列化获得新的对象
<?php
class Singleton{
#申请一个私有静态成员变量来保存该类的唯一实例
private static $object=NULL;
//声明私有构造方法,防止类外无限部创建对象
private function __construct(){
echo __METHOD__,'<br/>';
}
//声明一个静态的公告方法,提供类外部创建对象
public static function getInsance(){
if (!(self::$object instanceof self)){
self::$object=new self();
}
return self::$object;
}
//声明私有的克隆方法,防止对象被克隆
private function __clone()
{
// TODO: Implement __clone() method.
}
//重写sleep方法,将返回置空,防止序列化反序列化获得新对象。
public function __sleep()
{
// TODO: Implement __sleep() method.
return [];
}
}
$sl=Singleton::getInsance();
$sl2=Singleton::getInsance();
var_dump($sl);
echo "<br/>";
var_dump($sl2);
?>