对于单例模式,首先说一下好处:
单例模式通俗的来说就是在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); ?>
单例类不能再其它类中直接实例化,只能被其自身实例化。它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用。