单例模式就是让类的一个对象成为系统中的唯一实例,避免大量的 new 操作消耗的资源。
PHP的单例模式实现要求:
1、一个private的__construct是必须的,单例类不能在其它类中实例化,只能被自身实例化;
2、拥有一个保存类的实例的静态成员变量;
3、一个静态的公共方法用于实例化这个类,并访问这个类的实例;
<?php
class Demo{
private static $MyObject ; //保存对象的静态属性
private function __construct(){ //私有化构造函数
echo "这是构造方法<br>";
}
public static function getInstance(){
if(!(self::$MyObject instanceof self)){
echo "实例化<br>";
self::$MyObject = new self;
}
return self::$MyObject;
} //类的其它方法
public function test(){
echo "测试方法<br>";
}
} //第一次调用类的实例
$first = Demo::getInstance();
$first->test();
//第二次调用类的实例
$second = Demo::getInstance();
$second->test();
【运行结果】
通过结果,可以看到Demo类只实例化了一次。