单例对象的类必须保证只有一个实例存在,也就是对于某一个功能只能实例化一个对象。
单例的核心是,实例一次生成,全局唯一,多次调用。因此在单例模式必须包含三要素:
1:私有化构造函数,私有化clone。也就是不能new,不能clone。
2:拥有一个静态变量,用于保存当前的类。
3:提供一个公共的访问入口。
<?php /** * Class Singleton 单例类实现 */ class Singleton { // 保存实例的静态对象 private static $getInstance; // 私有化构造方法 private function __construct() { } // 私有化clone方法 private function __clone() { } /** * 声明静态调用方法 */ public static function getInstance() { if (!self::$getInstance) { self::$getInstance = new self(); } return self::$getInstance; } } $a = Singleton::getInstance(); $b = Singleton::getInstance(); // 判断是否是一个实例 var_dump($a === $b); // true一个对象
About the author