PHP 单例模式代码片段

 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 9762
object(single)[1]
  public ‘hash‘ => int 9762
object(single)[1]
  public ‘hash‘ => int 9762
object(single)[1]
  public ‘hash‘ => int 9762

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。