abstract:<?php //单例模式:一个类仅允许被实例化一次 class Wife { } $wife1 = new Wife; $wife2 = new Wife; //查看$wife1和$wife2是否和Wife相等 echo ($wife1 instanceof Wife)?'是
<?php //单例模式:一个类仅允许被实例化一次 class Wife { } $wife1 = new Wife; $wife2 = new Wife; //查看$wife1和$wife2是否和Wife相等 echo ($wife1 instanceof Wife)?'是':'不是'; echo '<br>'; echo ($wife2 instanceof Wife)?'是':'不是'; echo '<br>'; //查看$wife1和$wife2是否相等 echo ($wife1 === $wife2)?'相等':'不相等'; echo '<br>'; //打印输出 var_dump($wife1); echo '<br>'; var_dump($wife2); // object(Wife)#1 (0) { } // object(Wife)#2 (0) { } //他们不是同一个,id不一样 echo '<hr>'; //实例化通过两种方式:1.new来创建类实例;2.clone来实例 //数据库连接对象pdo等只能被实例化一次 //Hubby仅被实例化一次,在类中先私有化,再进行实例化 class Hubby { private function __construct(){}//构造器私有化 private function __clone(){} //克隆私有化 //创建类的内部静态属性,保存类的唯一实例 protected static $instance =null; //创建一个外部接口 创建并返回当前类的唯一实例 public static function getInstance() { if(is_null(static::$instance)){ //进行实例化,静态延迟绑定 static::$instance = new static(); } //动态调用返回值 return static::$instance; } } //外部实例化Hubby类 $hubby1 = Hubby::getInstance(); $hubby2 = Hubby::getInstance(); echo ($hubby1 instanceof Hubby)?'是':'不是'; echo '<br>'; echo ($hubby2 instanceof Hubby)?'是':'不是'; echo '<br>'; //查看他们是同一个实例对象,结果id也是一样的 echo ($hubby1 === $hubby2)?'完全相等':'不相等'; echo '<br>'; var_dump($hubby1); echo '<br>'; var_dump($hubby2); echo '<hr>';
Correcting teacher:查无此人Correction time:2019-03-22 17:28:40
Teacher's summary:完成的不错。编程有很多种功能,写法。这种设计模式,可以快速解决问题。继续加油