单例模式就是让类的一个对象成为系统中的唯一实例,避免大量的 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类只实例化了一次。