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