php单例模式

it2023-02-11  78

<?php class Single { # 创建一个 私有的 静态对象 为什么一定要创建一个静态的属性,因为 私有化构造方法,再去使用$this就会报错,因为不可在创建实例化对象了。 private static $obj = null; # 私有化 构造方法,不允许创建实例化对象 private function __construct(){} # 创建一个静态方法,因为不能再实例对象 public static function getInface() { # 判断这是否是一个空对象,如果是一个空对象,则将对象传递过去, if(is_null(self::$obj)){ self::$obj = new Single(); } return self::$obj; } # 私有化 克隆方法,不允许克隆这个类 private function __clone(){} public function index() { echo 222; } } $obj = Single::getInface(); $new_obj = Single::getInface(); // 私有化构造方法,则不能实例化对象 // $new_obj = new Single(); // var_dump($new_obj); /* 私有化构造方法,不允许克隆此类 $new_obj = clone new Single(); var_dump($obj); */ echo $obj->index(); # 单例模式,类中只有一个对象 var_dump($obj === $new_obj);
最新回复(0)