PHP面向對象—單例模式_PHP教程
推薦:使用PHP構造函數構造函數的定義: 在類中創建與類同名的函數,即為構造函數。 (1)構造函數可以帶參數,也可以不帶參數。 (2)當使用構造函數的時候,可以在實例化一個對象的時候,同時調用了該函數,而無需在實例化對象后,使用方法或者函數。 (3)構造函數就是對象的一個方法。 例子:
單例模式是設計模式中比較簡單的模式,會在一些特殊的場影得以運用,比如:應用中只需要一個對象實例存在,這時使用單例模式能夠節省內存。單例模式體現了面向對象封裝特性中的“單一職責”和“對象自治”原則。
構建一個PHP的單例類需要以下要求:
構造函數為private,防止外部代碼new此對象。
構造函數為final可以禁止子類覆蓋。
擁有一個靜態成員變量來保存自身實例。
擁有一個返回自身實例,公共且靜態的方法,此方法負責只產生一個實例,如果已經有一個實例則直接返回。
為了防止對象被克隆,還要重寫__clone()方法
- <?php
- class Database {
- private $_db;
- static $_instance;
- final private function __construct($dbname,$user='root',$password='',$port='3306') {
- $conStr = "dbname=".$dbname." user=".$user." password=".$password." port=".$port;
- $this->_db = pg_connect($conStr);
- }
- private __clone() {};
- public static function getInstance($dbname,$user='root',$password='',$port='3306') {
- if( ! (self::$_instance instanceof self) ) {
- self::$_instance = new self($dbname,$user='root',$password='',$port='3306');
- }
- return self::$_instance;
- }
- public function query($sql) {
- return pg_query($this->_db, $sql);
- }
- }
- ?>
分享:PHP重載方法1.重載 Overload 子類改變父類的方法,為重載。 重載是一種覆蓋性行為,會將以前的方法覆蓋掉。 2.重載案例: ?php class EMBA_student //聲明EMBA學生類 { //用var來定義類的屬性 var $no ; //序號 var $name ; //姓名 var $gender ; //性別 var $age ; //年齡 //方法
相關PHP教程:
- 相關鏈接:
- 教程說明:
PHP教程-PHP面向對象—單例模式。