摘要:<?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來創(chuàng)建類實例;2.clone來實例 //數(shù)據(jù)庫連接對象pdo等只能被實例化一次 //Hubby僅被實例化一次,在類中先私有化,再進行實例化 class Hubby { private function __construct(){}//構(gòu)造器私有化 private function __clone(){} //克隆私有化 //創(chuàng)建類的內(nèi)部靜態(tài)屬性,保存類的唯一實例 protected static $instance =null; //創(chuàng)建一個外部接口 創(chuàng)建并返回當(dāng)前類的唯一實例 public static function getInstance() { if(is_null(static::$instance)){ //進行實例化,靜態(tài)延遲綁定 static::$instance = new static(); } //動態(tài)調(diào)用返回值 return static::$instance; } } //外部實例化Hubby類 $hubby1 = Hubby::getInstance(); $hubby2 = Hubby::getInstance(); echo ($hubby1 instanceof Hubby)?'是':'不是'; echo '<br>'; echo ($hubby2 instanceof Hubby)?'是':'不是'; echo '<br>'; //查看他們是同一個實例對象,結(jié)果id也是一樣的 echo ($hubby1 === $hubby2)?'完全相等':'不相等'; echo '<br>'; var_dump($hubby1); echo '<br>'; var_dump($hubby2); echo '<hr>';
批改老師:查無此人批改時間:2019-03-22 17:28:40
老師總結(jié):完成的不錯。編程有很多種功能,寫法。這種設(shè)計模式,可以快速解決問題。繼續(xù)加油