php 单例模式
单例模式特点:在程序执行过程里,只有一个类对象存在
单例模式的三要素:
1.构造方法私有化(禁止类外部用new的方式实例化类)
2.禁止克隆(允许克隆的话,将可以克隆出多个对象)
3.拥有一个静态方法,方法中进行仅一次对象实例化,允许类外部调用
例子如下:
class Single {
private static $singleOb;
private function __construct() {
}
static function single() {
if (!self::$singleOb instanceof Single) {//判断self::$singleOb中有没有Single类的实例化对象
self::$singleOb = new Single();
return self::$singleOb;
} else {
return self::$singleOb;
}
}
public function __clone() {
trigger_error('Clone is not allow' ,E_USER_ERROR);//报错
}
public function test() {
echo "single test";
}
}
测试:
1.正确方式
$singleOb = Single::single(); var_dump($singleOb); $singleOb -> test();
2.禁止克隆 $oc=clone($singleOb); var_dump($oc);
3.禁止外部调用构造函数 $ob = new Single(); $ob -> test();