首页 > 开发 > PHP > 正文

PHP面向对象―单例模式

2024-05-04 21:53:04
字体:
来源:转载
供稿:网友

单例模式是设计模式中比较简单的模式,会在一些特殊的场影得以运用,比如:应用中只需要一个对象实例存在,这时使用单例模式能够节省内存。单例模式体现了面向对象封装特性中的“单一职责”和“对象自治”原则。

构建一个PHP的单例类需要以下要求:

构造函数为private,防止外部代码new此对象。

构造函数为final可以禁止子类覆盖。

拥有一个静态成员变量来保存自身实例。

拥有一个返回自身实例,公共且静态的方法,此方法负责只产生一个实例,如果已经有一个实例则直接返回。

为了防止对象被克隆,还要重写__clone()方法

  1. <?php 
  2. class Database { 
  3.     private $_db
  4.     static $_instance
  5.     final private function __construct($dbname,$user='root',$password='',$port='3306') { 
  6.         $conStr = "dbname=".$dbname." user=".$user." password=".$password." port=".$port
  7.         $this->_db = pg_connect($conStr); 
  8.     } 
  9.     private __clone() {}; 
  10.     public static function getInstance($dbname,$user='root',$password='',$port='3306') { 
  11.         if( ! (self::$_instance instanceof self) ) { 
  12.             self::$_instance = new self($dbname,$user='root',$password='',$port='3306'); 
  13.         } 
  14.         return self::$_instance
  15.     } 
  16.     public function query($sql) { 
  17.         return pg_query($this->_db, $sql); 
  18.     } 
  19. ?> 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表