PHP 单例模式

<?php

//单例模式:例如只有一个db类的时候保证只new一次

//第一步:普通类

class sigle{

  protected static $ins = null();

//第二步:封锁 new 操作

  public static function getIns(){

    if(self ::$ins === false){

      self::$ins = new self();

    }

    return self::$ins;

  }

//每次 new 都会触发构造方法,把构造方法改成受保护的 protected

//第五步:加上 final 防止子类基础后重新定义构造函数

  final protected function __construct(){}

//clone 克隆也会产生多个对象,需要拒绝克隆

  final protected function __clone(){}

}

$s1 = sigle::getIns();

$s2 = clone $s1;

//如果像下面一样继承父类可以重新定义构造函数,可以 new 多个,所以需要把父类中的构造函数禁止

class multe extends sigle{

  public function __construct(){}

}

?>

https://www.bilibili.com/video/BV1r7411j7Gc?p=6&spm_id_from=pageDriver

原文地址:https://www.cnblogs.com/nyfz/p/15562521.html