单例模式相信学过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);