单例模式相信学过php都有了解,最近准备面试,复习一下,顺便当个记录

单例模式有几个特点

  1. 首先需要有一个私有的静态变量来存储类的唯一实例
  2. 私有的构造方法,防止被从其他地方实例化
  3. 私有的克隆方法
  4. 一个可以供外部调用的公共方法

好了,下面来实现一下

/**
	 * 单例模式
	 * 有一个静态变量来保存类的唯一实例
	 * 构造函数和科宏函数都是私有
	 * 可以访问的公共方法
	 * 只能实例化一次
	 */
	class Obj
	{
		private static $var;
		public $str = NULL;
		
		private function __construct ()
		{
			$this->str = rand(1,9999);
		}
		
		private function __clone()
		{
		
		}
		
		public static function getObj ()
		{
			if (!(self::$var instanceof self)) {
				self::$var = new Obj();
			}
			return self::$var;
		}
	}
	
	$a = Obj::getObj();
	$b = Obj::getObj();
	
	var_dump($a);
	var_dump($b);