成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

一招解決 PHP 單例模式解析和實戰(zhàn)

我們學(xué)習(xí)了解了這么多關(guān)于PHP的知識,今天學(xué)習(xí)如何一招解決 PHP 單例模式解析和實戰(zhàn),不知你們是否已經(jīng)完全掌握了呢,如果沒有,那就跟隨本篇文章一起繼續(xù)學(xué)習(xí)吧

一、什么是單例模式?

1、含義

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

2、單例模式的三個要點:

(1). 需要一個保存類的唯一實例的靜態(tài)成員變量:

private static $_instance;

(2). 構(gòu)造函數(shù)和克隆函數(shù)必須聲明為私有的,防止外部程序new類從而失去單例模式的意義:

private function __construct()  {      $this->_db = pg_connect('xxxx'); }  private function __clone() { }//覆蓋__clone()方法,禁止克隆

(3). 必須提供一個訪問這個實例的公共的靜態(tài)方法(通常為getInstance方法),從而返回唯一實例的一個引用

    public static function getInstance()       {           if(! (self::$_instance instanceof self) )          {               self::$_instance = new self();           }         return self::$_instance;        }

二、為什么要使用單例模式?

1、PHP缺點:

PHP語言是一種解釋型的腳本語言,這種運行機(jī)制使得每個PHP頁面被解釋執(zhí)行后,所有的相關(guān)資源都會被回收。也就是說,PHP在語言級別上沒有辦法讓某個對象常駐內(nèi)存,這和asp.net、Java等編譯型是不同的,比如在Java中單例會一直存在于整個應(yīng)用程序的生命周期里,變量是跨頁面級的,真正可以做到這個實例在應(yīng)用程序生命周期中的唯一性。然而在PHP中,所有的變量無論是全局變量還是類的靜態(tài)成員,都是頁面級的,每次頁面被執(zhí)行時,都會重新建立新的對象,都會在頁面執(zhí)行完畢后被清空,這樣似乎PHP單例模式就沒有什么意義了,所以PHP單例模式我覺得只是針對單次頁面級請求時出現(xiàn)多個應(yīng)用場景并需要共享同一對象資源時是非常有意義的。

2、單例模式在PHP中的應(yīng)用場合:

(1)、應(yīng)用程序與數(shù)據(jù)庫交互

一個應(yīng)用中會存在大量的數(shù)據(jù)庫操作,比如過數(shù)據(jù)庫句柄來連接數(shù)據(jù)庫這一行為,使用單例模式可以避免大量的new操作,因為每一次new操作都會消耗內(nèi)存資源和系統(tǒng)資源。

(2)、控制配置信息

如果系統(tǒng)中需要有一個類來全局控制某些配置信息, 那么使用單例模式可以很方便的實現(xiàn).

三、如何實現(xiàn)單例模式?

1、普通的數(shù)據(jù)庫訪問例子:

<?php ...... //初始化一個數(shù)據(jù)庫句柄 $db = new DB(...);  //添加用戶信息 $db->addUserInfo(...);  ......  //在函數(shù)中訪問數(shù)據(jù)庫,查找用戶信息 function getUserInfo() {     $db = new DB(...);//再次new 數(shù)據(jù)庫類,和數(shù)據(jù)庫建立連接     $db = query(....);//根據(jù)查詢語句訪問數(shù)據(jù)庫 }  ?>

2、應(yīng)用單例模式對數(shù)據(jù)庫進(jìn)行操作:

<?php  class DB   {       private $_db;       private static $_instance;          private function __construct(...)       {           $this->_db = pg_connect(...);//postgrsql       }          private function __clone() {};  //覆蓋__clone()方法,禁止克隆          public static function getInstance()       {           if(! (self::$_instance instanceof self) ) {               self::$_instance = new self();           }           return self::$_instance;       }                public function addUserInfo(...)     {           }       public function getUserInfo(...)     {       }  }  //test  $db = DB::getInstance();  $db->addUserInfo(...);  $db->getUserInfo(...);   ?>

3、深入理解

<?php class db { 	public $conn; 	public static $sql; 	public static $instance=null; 	private function __construct(){ 		require_once('db.config.php'); 		$this->conn = mysql_connect($db['host'],$db['user'],$db['password']); 		if(!mysql_select_db($db['database'],$this->conn)){ 			echo "失敗"; 		}; 		mysql_query('set names utf8',$this->conn);		 	} 	public static function getInstance(){ 		if(is_null(self::$instance)){ 			self::$instance = new db; 		} 		return self::$instance; 	} 	/** 	 * 查詢數(shù)據(jù)庫 	 */ 	public function select($table,$condition=array(),$field = array()){ 		$where=''; 		if(!empty($condition)){ 			 			foreach($condition as $k=>$v){ 				$where.=$k."='".$v."' and "; 			} 			$where='where '.$where .'1=1'; 		} 		$fieldstr = ''; 		if(!empty($field)){ 			 			foreach($field as $k=>$v){ 				$fieldstr.= $v.','; 			} 			 $fieldstr = rtrim($fieldstr,','); 		}else{ 			$fieldstr = '*'; 		} 		self::$sql = "select {$fieldstr} from {$table} {$where}"; 		$result=mysql_query(self::$sql,$this->conn); 		$resuleRow = array(); 		$i = 0; 		while($row=mysql_fetch_assoc($result)){ 			foreach($row as $k=>$v){ 				$resuleRow[$i][$k] = $v; 			} 			$i++; 		} 		return $resuleRow; 	} 	/** 	 * 添加一條記錄 	 */ 	 public function insert($table,$data){ 	 	$values = ''; 	 	$datas = ''; 	 	foreach($data as $k=>$v){ 	 		$values.=$k.','; 	 		$datas.="'$v'".','; 	 	} 	 	$values = rtrim($values,','); 	 	$datas   = rtrim($datas,','); 	 	self::$sql = "INSERT INTO  {$table} ({$values}) VALUES ({$datas})"; 		if(mysql_query(self::$sql)){ 			return mysql_insert_id(); 		}else{ 			return false; 		}; 	 } 	 /** 	  * 修改一條記錄 	  */ 	public function update($table,$data,$condition=array()){ 		$where=''; 		if(!empty($condition)){ 			 			foreach($condition as $k=>$v){ 				$where.=$k."='".$v."' and "; 			} 			$where='where '.$where .'1=1'; 		} 		$updatastr = ''; 		if(!empty($data)){ 			foreach($data as $k=>$v){ 				$updatastr.= $k."='".$v."',"; 			} 			$updatastr = 'set '.rtrim($updatastr,','); 		} 		self::$sql = "update {$table} {$updatastr} {$where}"; 		return mysql_query(self::$sql); 	} 	/** 	 * 刪除記錄 	 */ 	 public function delete($table,$condition){ 	 	$where=''; 		if(!empty($condition)){ 			 			foreach($condition as $k=>$v){ 				$where.=$k."='".$v."' and "; 			} 			$where='where '.$where .'1=1'; 		} 		self::$sql = "delete from {$table} {$where}"; 		return mysql_query(self::$sql); 		 	 } 	 	public static function getLastSql(){ 		echo self::$sql; 	} 	 	 	 }  $db = db::getInstance(); //$list = $db->select('demo',array('name'=>'tom','password'=>'ds'),array('name','password')); //echo $db->insert('demo',array('name'=>'最近你啦','password'=>'123')); //echo $db->update('demo',array("name"=>'xxx',"password"=>'123'),array('id'=>1)); echo $db->delete('demo',array('id'=>'2')); db::getLastSql(); echo "<pre>"; ?>

推薦學(xué)習(xí):《PHP視頻教程》

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
精品噜噜噜噜久久久久久久久 | 一本到高清视频在线观看丶| 亚洲欧洲无码一区二区三区| 又爽又黄又无遮挡网站| AV无码小缝喷白浆在线观看| 成年女人18级毛片毛片免费| 国产成人精品免费午夜APP| 国产毛多水多高潮高清| 精品国产一区二区三区噜噜噜| 久久亚洲AV成人无码国产| 男人用嘴添女人私密视频| 日本VA欧美VA欧美VA精品| 天堂А√在线最新版在线| 亚洲AV无码卡通动漫AV| 一本一道AV中文字幕无码| BGMBGMBGM毛多多视频1| 国产★蜜臀AV无码| 娇小XXXXBXBⅨ中国XX| 免费A级毛片18禁网站APP| 日本熟妇JAPANESE丰满| 香港三日本三级少妇三级视频| 免费一看一级毛片少妇丰满2| 被添出水全过程免费视频| 亚洲尤码不卡AV麻豆| 人C交ZZZ0OOZZZ000| 国产麻豆 9L 精品三级站| 张柏芝性XXXXXⅩ| 色噜噜狠狠色综合网| 乱人伦中文无码视频| 国精产品W灬源码1688伊| 激情久久AV一区AV二区AV三| 国产成人无码午夜视频在线观看| 极品少妇被啪到呻吟喷水| 女女互揉吃奶揉到高潮视频| 天天看片天天AV免费观看| 亚洲日本VA一区二区三区| H无码精品动漫在线观看导航| 国产乱人伦精品一区二区| 老司机午夜精品99久久免费| 色婷婷亚洲一区二区综合| 亚洲国产精品久久久久制服| av在线一区二区三区| 国产特级毛片AAAAAA高潮流| 免费A级毛片无码免费视频| 天天做天天摸天天爽天天爱| 喑交小拗女一区二区三区| 公翁的粗大放进我的秘密小说 | 午夜美女裸体福利视频| 中文字幕亚洲欧美日韩在线不卡| 国产成人久久精品二区三区| 久久亚洲国产成人精品无码区 | 亚洲第一无码AV播放器下载| SEERX性欧美| 狠狠澡人人添人人爽人妻少妇| 啪啪叉叉xx高清无码| 亚洲—本道 在线无码AV发 | 国产美女遭强高潮开双腿| 免费污站18禁的刺激| 性俄罗斯牲交XXXXX视频| CHINESE激烈高潮HD| 黑人性受XXXX黑人XYX性爽| 日本精品VIDEOSSEX 黑| 野花社区高清在线观看视频| 国产精华液和欧美的精华液的区别| 毛卡5卡6卡7卡8入口| 丰满少妇被猛烈进入高清APP| MM1313又粗又大受不了| 国产精品不卡AⅤ在线播放| 成人免费无码H在线观看不卡| 办公丝袜AV一区二区三区 | 国产午夜无码精品免费看动漫| 国产69精品久久久久久人妻精品 | 永久AV狼友网站在线观看| 国产成人精欧美精品视频| 女BBBB槡BBBB槡BBBB| 亚洲精品国产AV天美传媒| 成人无码H动漫在线网站樱花| 久久夜色精品国产噜噜亚洲AV | 国产精品国产三级国产AV麻豆| 欧美激情在线播放| 亚洲午夜理论无码电影| 国产乱人伦AV麻豆网| 日本久久久WWW成人免费毛片丨| 一区二区无码免费视频| 国产又黄又爽胸又大免费视频| 日韩AV人人夜夜澡人人爽| 中文无码一区二区不卡ΑV| 黑人欧美一区二区三区4p| 四虎永久在线精品免费无码| GOGO全球高清大尺度视频| 久久精品午夜一区二区福利| 亚洲AV鲁丝一区二区三区| 丰满的少妇愉情HD高清免费| 欧美精品一区二区蜜臀亚洲| 影音先锋熟女少妇AV资源| 狠狠亚洲婷婷综合色香五月| 无码人妻久久一区二区三区免费| 成人毛片100部免费看| 欧美精品V国产精品V日韩精品| 一区二区精品视频| 久久97超碰人人澡人人爱| 亚洲AV日韩精品久久久久久A| 国产边做饭边被躁在线播放91| 人性禁岛1破禁果| 95W乳液78WYW永久| 免费看黑人强伦姧人妻| 一区二区三区欧美| 久久精品九九亚洲精品| 亚洲国产成人精品无码区在线| 国产婷婷成人久久Av免费高清| 推高她的裙子挺身而入| 公么大龟弄得我好舒服第一| 日韩A片无码一区二区五区电影| GOGO大胆啪啪艺术| 无翼乌之无遮全彩浩君奶| www.comAV在线观看| 国内精品自产拍在线观看| 小SAO货边洗澡边CAO你| 香蕉国产成版人视频APP| 二男一女一起日B| 亚洲成AV人片在| 把腿张开老子臊烂你| 亚洲AV成人无码网站大全| 侵犯美人妻中出中文字幕| 幼儿交1300部多少钱| 国产极品熟女沙发内射AV| 男人的天堂免费A级毛片无码| 性无码一区二区三区在线观看 | 亚洲AⅤ精品无码一区二区PRO| 成人午夜亚洲精品无码网站 | 色一情一乱一伦一区二区三区日本| 在教室伦流澡到高潮H强圩| 久久精品无码一区二区WWW| 亚洲乱码国产乱码精品精姦| 国内精品久久久久影院蜜芽蜜芽T| 无码人妻精品一区二区三区蜜桃| 国产AV大陆精品一区二区三区 | 被添出水全过程免费视频| 男人的天堂免费A级毛片无码| 综合图区亚洲欧美另类图片| 精品人妻久久久久久888| 亚洲欧美韩国综合色| 久久69老妇伦国产熟女高清| 亚洲狠狠婷婷综合久久久久图片| 精品国产乱码久久久久久人妻 | 好男人好资源影视在线| 亚洲国产精品久久久久婷蜜芽 | 余生请多指教在线观看免费全集 | 欧美XXXX做受视频| AV免费啪啪永久| 日本极品少妇XXXXⅩOOO| 国产99久60在线视频 | 传| 无码国产69精品久久久久网站| 国产性生大片免费观看性| 午夜免费无码福利视频网址| 精品深夜av无码一区二区老年 | 国精产品自偷自偷综合下载| 农里粗汉的共妻嗯啊高H| AV在线中文字幕不卡电影网| 兽交ZOOSKOO| 狠狠躁夜夜躁人人爽天天不卡软件 | 大桥久未无码吹潮在线观看| 四虎成人精品一区二区免费网站| 娇妻玩4P被3个男子伺候| 97人妻碰碰碰久久久久| 人妻体体内射精一区二区| 国产精品久久久久精品综合| 小嫩模无套内谢第一次| 国产精品久久久久久吹潮| 日韩精品无码人妻免费视频| 国产熟妇一区二区三区AⅤ在线| 一区二区无码免费视频| 欧美少妇XXXXX| 国产裸体裸美女无遮挡网站| 亚洲欧美日本韩国| 男吃奶玩乳尖高潮视频午夜| 国产精品久久久亚洲| 野花香在线观看免费观看大全动漫| 母亲とが话しています播放| 国产精品三级AV三级AV三级| 亚洲人成无码网WWW电影麻豆| 人妻精品丝袜一区二区无码AV| 精品国产第一国产综合精品| 短裙公车被直接进入| 中文字幕亚洲无线码| 婷婷综合久久中文字幕蜜桃三电影| 乱色精品无码一区二区国产盗| 国产成人A在线观看视频免费| 亚洲男人综合久久综合天堂| 少妇无码一区二区二三区| 毛豆日产精品卡2卡3卡4卡免费| 国产午夜无码片在线观看影院| 草莓丝瓜芭乐鸭脖奶茶搭配食物| 又粗又黄又猛又爽大片APP| 亚洲AV无码专区在线电影天堂| 少妇高潮惨叫喷水在线观看| 欧美日韩一区二区成人午夜电影 | 粗大猛烈进出高潮视频大全| 亚洲人成网线在线播放VA| 色综合色综合色综合色欲|