萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> PHP單例模式的學習筆記

PHP單例模式的學習筆記

作為對象的創建模式,單例模式確保某一個類只有一個實例,而且自行實例化並向整個系統全局地提供這個實例。它不會創建實例副本,而是會向單例類內部存儲的實例返回一個引用。


單例模式的特點:

1、構造函數需要標記為private(訪問控制:防止外部代碼使用new操作符創建對象),單例類不能在其他類中實例化,只能被其自身實例化;

2、擁有一個保存類的實例的靜態成員變量

3、擁有一個訪問這個實例的公共的靜態方法(常用getInstance()方法進行實例化單例類,通過instanceof操作符可以檢測到類是否已經被實例化)

另外,需要創建__clone()方法防止對象被復制(克隆)

DEMO(鏈接數據庫):

 代碼如下 復制代碼

/* 例子:數據庫連接職責的集中控制 */
class Database {
 
private $_db;
static $_instance;
 
private function __construct() {
$this->_db = pg_connect('dbname=example_db');
}
 
private __clone() {};
 
public static function getInstance() {
 if(! (self::$_instance instanceof self) )
 {
 self::$_instance = new self();
 }
 return self::$_instance;
 
}
 
public function query($sql) {
// 使用 $this->_db 執行一個查詢
return pg_query($this->_db, $sql);
}
}

copyright © 萬盛學電腦網 all rights reserved