標籤:
1 <?php 2 3 error_reporting(E_ALL | E_STRICT); 4 5 class single{ 6 7 public $hash; 8 9 static protected $ins = null;10 11 final protected function __construct(){ //final 能被繼承,不能被重寫(防止子類重寫構造方法)12 $this->hash = mt_rand(1,9999);13 }14 15 static public function getInstance(){16 if(self::$ins instanceof self){ //instanceof 判斷某個對象是不是某個類的執行個體17 return self::$ins;18 }19 self::$ins = new self();20 return self::$ins; 21 }22 }23 24 $s1 = single::getInstance();25 $s2 = single::getInstance();26 27 var_dump($s1);28 var_dump($s2);29 30 //son類繼承single類31 class son extends single{32 }33 34 $s1 = son::getInstance();35 $s2 = son::getInstance();36 37 var_dump($s1);38 var_dump($s2);
頁面輸出
object(single)[1] public ‘hash‘ => int 9762object(single)[1] public ‘hash‘ => int 9762object(single)[1] public ‘hash‘ => int 9762object(single)[1] public ‘hash‘ => int 9762
PHP 單例模式程式碼片段