<转>PHP单例模式 防止克隆方法

第一种方法:设置魔术方法__clone();访问权限为private
第二种方法:若__clone()为公用方法,则在函数中加上自定义错误,如trigger_error('Clone is not allow!',E_USER_ERROR);

单例模式的三个要点:

(1). 需要一个保存类的唯一实例的静态成员变量:

  1. private static $_instance;   


(2). 构造函数和克隆函数必须声明为私有的,防止外部程序new类从而失去单例模式的意义:

  1. private function __construct()   
  2. {   
  3.     $this->_db = pg_connect('xxxx');  
  4. }   
  5. private function __clone()  
  6. {  
  7. }//覆盖__clone()方法,禁止克隆  

 

(3). 必须提供一个访问这个实例的公共的静态方法(通常为getInstance方法),从而返回唯一实例的一个引用 

    1. public static function getInstance()    
    2. {    
    3.     if(! (self::$_instance instanceof self) )   
    4.     {    
    5.         self::$_instance = new self();    
    6.     }  
    7.     return self::$_instance;    
    8.   

posted on 2015-10-05 00:23  hahahahahai12  阅读(1302)  评论(0)    收藏  举报

导航