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