php设计单例模式,一次只能产生一个对象

单例即单个对象,一次只能生产一个对象,代码如下

class Single{  // 定义一个类

 static private $instance=null; // 声明一个静态属性,因为静态属性的数据具有长期性 且仅能为类所调用 所以这个静态属性用来保存对象。
//同时 为了防止在代码外面直接通过Single::$instance 赋值改变单例的属性 使其能产生多个对象,所以要对这个静态属性进行private化 不能在任何地方访问

  private function __construct(){  // 私有化构造方法,使之不能$obj=new single()这种传统的生产对象方式来生产对象,只能通过下面的静态方法使用类名调用生产对象的方式来创建对象。
  }

  static function getObject(){ // 声明一个函数 并且进行静态化 使之只能用类名调用 

    if(self::$instance==null){ // 如果不存在对象 
      $obj=new self();        //则生产出一个对象,self是指当前类 自己
      self::$instance = $obj; // 将生产出的对象赋值给静态属性,使之保存起来以待下次使用
      return $obj;        //返回对象
    }else{ //否则
      return self::$instance;  // 静态属性$instance不为空则是已经存在对象,则可以直接返回,因为里面有对象
    }

  }
}

// 使用下面的创建对象语法能发现,所有创建的对象都是同一个对象。
$o1=Single::getObject();
$o2=Single::getObject();
$o3=Single::getObject();
var_dump($o1);
var_dump($o2);
var_dump($o3);

代码可以直接copy运行

猜你喜欢

转载自blog.csdn.net/qq_36622490/article/details/84036084