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

站長資訊網
最全最豐富的資訊網站

一招解決 PHP 單例模式解析和實戰

我們學習了解了這么多關于PHP的知識,今天學習如何一招解決 PHP 單例模式解析和實戰,不知你們是否已經完全掌握了呢,如果沒有,那就跟隨本篇文章一起繼續學習吧

一、什么是單例模式?

1、含義

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

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

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

private static $_instance;

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

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

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

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

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

1、PHP缺點:

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

2、單例模式在PHP中的應用場合:

(1)、應用程序與數據庫交互

一個應用中會存在大量的數據庫操作,比如過數據庫句柄來連接數據庫這一行為,使用單例模式可以避免大量的new操作,因為每一次new操作都會消耗內存資源和系統資源。

(2)、控制配置信息

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

三、如何實現單例模式?

1、普通的數據庫訪問例子:

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

2、應用單例模式對數據庫進行操作:

<?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; 	} 	/** 	 * 查詢數據庫 	 */ 	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>"; ?>

推薦學習:《PHP視頻教程》

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
亚洲国产AV玩弄放荡人妇| 无人区一码二码三码四码区| 四虎国产精品成人影院| 玩弄少妇人妻中文字幕| 亚欧成人中文字幕一区| 亚洲精品无码专区在线| 在线精品一区二区三区| SQUIRT VIDEO喷水抽| 成 人 综合 亚洲另类| 国产ww又大又粗又刺激孕妇| 国产日产欧产精品精乱了派| 精品一区二区三区在线观看| 男吃乳尖玩奶头高潮视频| 日本久久99成人网站 | 真人新婚之夜破苞第一次视频| 80岁老熟妇乱子伦牲交| 成人国产精品一区二区视频| 国产色无码精品视频国产| 久久大蕉香蕉免费| 欧美日韩精品视频一区二区| 四虎国产成人永久精品免费| 亚洲国产精品无码中文在线| 中文字幕四区五区六区蜜桃| 丁香五月缴情网站| 狠狠色噜噜狠狠狠888米奇视频| 老太婆BBW搡BBBB搡搡搡搡| 日99久9在线 | 免费| 性色AV一区二区三区| 在线播放亚洲第一字幕| 大象一区一品精区搬运机器| 狠狠色丁香婷婷亚洲综合| 免费无码又爽又刺激动态图| 色又黄又爽18禁免费网站| 亚洲精品AAA揭晓| MM1313又粗又大受不了| 国产麻豆精选AV| 老外和中国女人毛片免费视频| 人善之交Z0OZO0D0G人善| 亚洲AV永久无码天堂网| 52色擼99热99RE超碰| 四川50岁熟妇大白屁股真爽| 看着领导挺进娇妻的体内电影| 欧美极品少妇×XXXBBB| 无人区码一码二码三码区| 喑交小拗女一区二区三区| 不收费半夜年轻人看B站软件| 哈昂~哈昂够了太多了老师| 男女爽爽午夜18禁影院免费| JAPANESEⅩⅩⅩHD69| 草莓视频APP下载| 好男人2019在线视频播放观看| 欧美XXXX狂喷| 亚洲AV无码1区2区久久| MM131亚洲国产美女久久| 国精产品自偷自偷综合下载 | 国产男女爽爽爽免费视频| 免费无码AV一区二区波多野结衣| 我和公发生了性关系公| 自拍偷在线精品自拍偷无码专区 | 疯狂做受XXXX高潮不断| 久久天堂综合亚洲伊人HD妓女| 少妇丰满大乳被男人揉捏视频| 一本一道人人妻人人妻ΑV| 国产96色在线 | 国| 蜜桃久久久久久精品免费观看 | 国产精品午夜福利不卡| 欧美高清FREEXXXX性| 亚洲国产五月综合网| 大色堂午夜福利国产TV6080| 麻豆文化传媒精品| 压在稚嫩的身体上耕耘| 不收费半夜年轻人看B站软件| 久久久久久妓女精品影院| 天天综合网网欲色| AV无码爆乳护士在线播放| 黄a无码片内射无码视频| 色婷婷久久久SWAG精品| 18禁裸乳无遮挡免费观看| 黑人巨大精品欧美黑寡妇| 色偷偷亚洲女人的天堂| 综合无码成人AⅤ视频在线观看| 国外亚洲成AV人片在线观看| 色噜噜狠狠色综合成人网| 中文字幕少妇人妻av护士人妻| 国内少妇偷人精品免费| 少妇的丰满人妻HD高清| MM1313亚洲国产精品无码试看 | 52色擼99热99RE超碰| 久久成人国产精品一区二区| 午夜精品一区二区三区免费视频| 边做边爱边吃奶叫床的动态图| 秘书在办公室被躁到高潮| 亚洲精品1卡2卡三卡23卡放| 国产精品久久国产精品99盘| 日本亚洲色欲网站WWW| 97久久久精品综合88久久| 久久久久成人片免费观看R| 亚洲A∨无码一区二区| 丰满人妻熟妇乱又伦精品视频三| 人妻 丝袜美腿 中文字幕| 一区二区三区在线 | 日| 精品国产乱码久久久久久人妻 | 日日摸夜夜添夜夜添AV| AV人摸人人人澡人人超碰下载| 老外免费CSGO交易网站下载| 亚洲男人第一无码AV网站| 国产又粗又猛又爽又黄的网站 | japanese国产在线观看| 免费一本色道久久一区| 曰本女人与公拘交酡| 久久九九久精品国产综合一千收藏| 亚洲GV天堂无码男同在线观看| 国产精品秘入口18禁麻豆免会员 | 欧洲熟妇色XXXXⅩ| 93久久精品日日躁夜夜躁欧美| 伦人伦XXX国产对白| 一本久久A久久免费精品不卡| 精品影片在线观看的网站| 亚洲国产综合无码一区| 含着奶头搓揉深深挺进| 亚洲AV无码久久精品蜜桃 | 免费无码成人AV电影在线播放| 伊人久久大香线蕉AV一区二区| 久久久久无码精品国产蜜桃| 亚洲一区二区三区无码影院| 久久成人国产精品一区二区| 亚洲熟妇无码V在线观看| 久久精品熟女亚洲AV麻豆| 亚洲性色AV日韩在线观看| 久久精品国产亚洲AV水果派| 亚洲中文字幕久久精品无码喷水| 九九在线中文字幕无码| 亚洲午夜久久久久久久久电影网| 久久精品国产亚洲AV麻豆色欲 | AV无码免费无禁网站| 国产欧美一区二区三区在线看| 无码成人一区二区三区| 国产传媒精品1区2区3区| 无码AV高潮喷水无码专区线| 国产精品久久久久久久网| 午夜理论片2019理论琪琪| 国产香蕉尹人在线视频你懂的 | 人妻无码中文字幕永久有效视频| 在线观看韩国电影| 免费极品AV一视觉盛宴| 99久久久国产精品免费蜜臀| 青青人亚洲AV永久无码精品无| 唱歌的大姐姐也想做| 少妇厨房愉情理9仑片视频| 国产精品久久久久久久久鸭无码| 亚洲AV无码国产精品久久不卡| 精品国产乱码久久久久久软件大全 | 国产精品嫩草影院AV| 亚洲国产成人久久综合电影| 久久久久人妻一区二区三区| 19岁MACBOOKPRO日本| 日本动漫爆乳H动漫无遮挡| 国产AV无码专区亚洲AV男同| 亚洲AVT无码天堂网| 久久精品人妻一区二区三区| 51CG9热心的朝阳群众| 日本熟妇毛茸茸XXXX| 国产精品一线二线三线| 亚洲欧美精品伊人久久| 美女用香蕉练口活视频| 被部长灌醉后强行侵犯| 玩弄朋友娇妻呻吟交换电影| 妓女院18禁止观看| 中文字幕丝袜人妻制服丝袜在线 | 差差差很疼免费软件APP下载| 偷窥熟女大屁股对白视频| 精品麻豆一卡2卡三卡4卡乱码 | 18禁无遮挡无码网站免费| 日本丰满护士爆乳XXXX无遮挡| 国产美女被遭强高潮网站免费| 亚洲综合成人AⅤ在线网站| 欧美一进一出抽搐大尺度视频| 粉嫩AV一区二区三区| 亚洲VA久久久噜噜噜久久天堂| 乱人伦人妻中文字幕不卡| 差差漫画页面在线阅读弹窗在线看| 无码AV免费一区二区三区| 久久精品免费一区二区三区| 爆乳邻居肉欲中文字幕| 亚洲AV日韩精品久久久久| 妺妺窝人体色www九色| 国产MV高清砖码2022| 一本大道东京热无码| 日本一丰满一BBW| 精品国产综合区久久久久久| PETEDAVIDSON鸟多长| 西西人体44RT NET毛最多| 秘密の花园动漫在线| 国产传媒精品1区2区3区 | 国产7色在线 | 国产| 亚洲一久久久久久久久| 日本强伦姧人妻完视频正版| 精品久久久久久综合日本| 宝贝别忍着喷出来| 亚洲精品无码乱码成人|