gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

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

一招解決 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號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
日本中文字幕片| 国产成人精品免费看在线播放| 蜜桃福利午夜精品一区| 成人一级片网站| 国产精品50p| 青青草国产免费| 国产真实老熟女无套内射| 在线免费黄色小视频| 污污网站在线观看视频| 激情 小说 亚洲 图片: 伦| 日韩av手机版| 91女神在线观看| 一区二区久久精品| www.51色.com| 成人免费在线视频播放| 91传媒免费视频| 国产成人在线免费看| 久草精品在线播放| 国产97色在线 | 日韩| 黄色免费网址大全| 色噜噜狠狠一区二区| 国产日韩视频在线播放| 中文字幕日韩精品无码内射| 你懂的av在线| 蜜臀av免费观看| 黄色录像特级片| 欧美在线观看成人| 人人爽人人爽av| 国产精品国产三级国产专区51| 日本高清视频免费在线观看| 香港三级韩国三级日本三级| 国产精品区在线| 人人妻人人澡人人爽欧美一区双| 黄色a级片免费| 国产精品嫩草影视| 免费黄色日本网站| 性欧美在线视频| 日本三级免费网站| 在线观看18视频网站| 男人的天堂日韩| 日韩一区二区高清视频| 国产一二三区av| 黄色av网址在线播放| 善良的小姨在线| 婷婷激情四射五月天| 国产高清不卡无码视频| 嫩草影院国产精品| 成人网站免费观看入口| 九九久久久久久| 国产成人手机视频| 福利视频一区二区三区四区| 女人高潮一级片| 久久精品免费网站| 激情伊人五月天| 精品少妇人欧美激情在线观看| 亚洲国产成人va在线观看麻豆| 99热自拍偷拍| 国产毛片久久久久久国产毛片| 色婷婷激情视频| xxxx一级片| 成人性做爰aaa片免费看不忠| 91黄色在线看| av无码久久久久久不卡网站| 黄色污污在线观看| 亚洲综合123| 久久精品国产99久久99久久久| 欧美午夜性生活| 黄色片视频在线| 少妇激情一区二区三区| 欧美三级午夜理伦三级| 少妇高潮喷水在线观看| 国产xxxx振车| 欧美变态另类刺激| 久章草在线视频| 欧美精品成人网| 91女神在线观看| 国产精品jizz在线观看老狼| 日本一区二区三区四区五区六区| √天堂资源在线| www.国产亚洲| 亚洲中文字幕无码中文字| 免费欧美一级视频| 国产免费视频传媒| 亚洲图色中文字幕| 水蜜桃在线免费观看| 国产一区二区四区| 久久久久久久久久久免费视频| 国产日韩成人内射视频| 国产精品v日韩精品v在线观看| 999久久久精品视频| 免费在线精品视频| 日本精品一区在线观看| 亚洲天堂av线| 中国丰满熟妇xxxx性| 激情视频综合网| 波多野结衣在线免费观看| 男人天堂a在线| 午夜dv内射一区二区| 在线观看三级网站| 欧美私人情侣网站| 一本—道久久a久久精品蜜桃| 人妻少妇精品无码专区二区| 成人亚洲视频在线观看| 91成人综合网| 国产又黄又猛的视频| 国产午夜福利100集发布| 欧美大片久久久| 免费成人在线视频网站| 欧美视频亚洲图片| 欧美牲交a欧美牲交aⅴ免费真 | 裸体大乳女做爰69| www黄色av| 和岳每晚弄的高潮嗷嗷叫视频| 日本久久精品一区二区| 国产欧美日韩网站| 中文字幕第22页| 亚欧在线免费观看| 狠狠97人人婷婷五月| 中国老女人av| 亚洲天堂网2018| 国产视频一区二区视频| 成人一对一视频| 国产a级黄色大片| xxx中文字幕| 污视频网址在线观看| 成人小视频在线看| 精品99在线视频| 波多野结衣乳巨码无在线| 免费看欧美一级片| 国产一区二区三区在线免费| 一区二区三区国产好的精华液| 色七七在线观看| 日韩一级理论片| 亚洲这里只有精品| 一区二区三区 日韩| 男人搞女人网站| 国产精品v日韩精品v在线观看| 女人另类性混交zo| 国产视频一区二区三区在线播放 | 丰满的少妇愉情hd高清果冻传媒| 26uuu成人| 欧美美女黄色网| 免费看日本黄色| 日本丰满少妇xxxx| 免费成人在线视频网站| 亚洲国产精品久久久久婷蜜芽| 国产精品一区二区免费在线观看| 我的公把我弄高潮了视频| 少妇av一区二区三区无码| 久草资源站在线观看| 韩国日本美国免费毛片| 自拍偷拍21p| 特级西西444| 免费国产a级片| 亚洲欧美久久久久| 欧美日韩视频免费在线观看| 青草网在线观看| 黄色一级一级片| 91香蕉视频网址| 色综合久久久久无码专区| 9久久婷婷国产综合精品性色| 手机免费看av网站| www.欧美黄色| 日韩av手机版| 欧美性猛交内射兽交老熟妇| 国产91在线视频观看| 亚洲一区二区中文字幕在线观看| 中国女人做爰视频| 男人舔女人下面高潮视频| 欧美xxxxxbbbbb| 凹凸国产熟女精品视频| 国产手机视频在线观看| 日韩在线视频在线观看| 精品一区二区成人免费视频| 久久精品视频16| 日韩欧美一级在线| 最新中文字幕免费视频| 欧美图片激情小说| 久久精品国产露脸对白| 毛片一区二区三区四区| 久久男人资源站| aaaaaaaa毛片| 日日躁夜夜躁aaaabbbb| a级黄色一级片| 波多野结衣与黑人| 天堂在线一区二区三区| 成人免费xxxxx在线视频| 日本a在线免费观看| avove在线观看| 亚洲综合20p| 91 在线视频观看| 天天色综合天天色| 18禁男女爽爽爽午夜网站免费| 久久人妻无码一区二区| 污污视频网站在线| 三级在线视频观看| 天天影视综合色| 国产一线二线三线在线观看| 一女被多男玩喷潮视频| 免费国产黄色网址|