php單例模式實現(xiàn)(對象只被創(chuàng)建一次)
更新時間:2012年12月05日 23:19:31 作者:
這是我在php面試題中遇到的一道試題,單例模式按字面來看就是某一個類只有一個實例,這樣做的好處還是很大的,比如說數(shù)據(jù)庫的連接,我們只需要實例化一次,不需要每次都去new了,這樣極大的降低了資源的耗費
單例類至少擁有以下三種公共元素:
必須擁有一個構(gòu)造函數(shù),并且必須被標(biāo)記為private。
擁有一個保存類的實例的靜態(tài)成員變量。
擁有一個訪問這個實例的公共的靜態(tài)方法
具體使用方面,我在下面php實例中注釋的很清楚:
復(fù)制代碼 代碼如下:
<?php
/**
* by www.phpddt.com
*/
class Mysql{
//該屬性用來保存實例
private static $conn;
//構(gòu)造函數(shù)為private,防止創(chuàng)建對象
private function __construct(){
$this->conn = mysql_connect('localhost','root','');
}
//創(chuàng)建一個用來實例化對象的方法
public static function getInstance(){
if(!(self::$conn instanceof self)){
self::$conn = new self;
}
return self::$conn;
}
//防止對象被復(fù)制
public function __clone(){
trigger_error('Clone is not allowed !');
}
}
//只能這樣取得實例,不能new 和 clone
$mysql = Mysql::getInstance();
?>
您可能感興趣的文章:
- PHP使用new StdClass()創(chuàng)建空對象的方法分析
- php使用變量動態(tài)創(chuàng)建類的對象用法示例
- PHP動態(tài)地創(chuàng)建屬性和方法, 對象的復(fù)制, 對象的比較,加載指定的文件,自動加載類文件,命名空間
- 一個ASP創(chuàng)建動態(tài)對象的工廠類(類似PHP的stdClass)
- PHP面向?qū)ο蟮倪M(jìn)階學(xué)習(xí)(抽像類、接口、final、類常量)
- php學(xué)習(xí)筆記 類的聲明與對象實例化
- php面向?qū)ο笕ヂ?(二) 實例化對象 使用對象成員
- PHP對象實例化單例方法
- PHP面向?qū)ο笕筇攸c學(xué)習(xí)(充分理解抽象、封裝、繼承、多態(tài))
- php初始化對象和析構(gòu)函數(shù)的簡單實例
- PHP創(chuàng)建對象的六種方式實例總結(jié)

