成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > PHP單例模式應(yīng)用示例【多次連接數(shù)據(jù)庫只實例化一次】

PHP單例模式應(yīng)用示例【多次連接數(shù)據(jù)庫只實例化一次】

熱門標(biāo)簽:兼職做地圖標(biāo)注好賺錢嗎 海南外呼系統(tǒng)方案 亳州企業(yè)外呼系統(tǒng) 地圖標(biāo)注怎么做商戶驗證 智能電銷語音機(jī)器人資訊 打開百度地圖標(biāo)注 蘇州外呼系統(tǒng)有效果嗎 山東電銷卡外呼系統(tǒng)原理是什么 400 電話 辦理

本文實例講述了PHP單例模式應(yīng)用。分享給大家供大家參考,具體如下:

以前剛開始工作的時候經(jīng)常連接數(shù)據(jù)庫,每次用到數(shù)據(jù)庫的時候就要用new進(jìn)行實例并連接一次,當(dāng)時因為連接數(shù)據(jù)庫的次數(shù)不是很頻繁,所以也沒什么。后來主管對我說我現(xiàn)在這樣每次都連接數(shù)據(jù)庫的如果數(shù)據(jù)讀取頻繁的話對數(shù)據(jù)庫和系統(tǒng)造成的壓力會很大,讓我想想辦法能不能就連接一次數(shù)據(jù)庫然后再次用到的時候就不用new一個新的連接了,當(dāng)時怎么也沒想到好的辦法,知道最近學(xué)到了單例模式才恍然大悟,當(dāng)時主管是引導(dǎo)我用單例模式的,只怪我以前對開發(fā)模式不懂。好了廢話少說,下面來看單例模式:

單例模式(職責(zé)模式):

簡單的說,一個對象(在學(xué)習(xí)設(shè)計模式之前,需要比較了解面向?qū)ο笏枷耄┲回?fù)責(zé)一個特定的任務(wù);

單例類:

1、構(gòu)造函數(shù)需要標(biāo)記為private(訪問控制:防止外部代碼使用new操作符創(chuàng)建對象),單例類不能在其他類中實例化,只能被其自身實例化;

2、擁有一個保存類的實例的靜態(tài)成員變量

3、擁有一個訪問這個實例的公共的靜態(tài)方法(常用getInstance()方法進(jìn)行實例化單例類,通過instanceof操作符可以檢測到類是否已經(jīng)被實例化)

另外,需要創(chuàng)建__clone()方法防止對象被復(fù)制(克?。?/p>

為什么要使用PHP單例模式?

1、php的應(yīng)用主要在于數(shù)據(jù)庫應(yīng)用, 所以一個應(yīng)用中會存在大量的數(shù)據(jù)庫操作, 使用單例模式, 則可以避免大量的new 操作消耗的資源。

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

3、在一次頁面請求中, 便于進(jìn)行調(diào)試, 因為所有的代碼(例如數(shù)據(jù)庫操作類db)都集中在一個類中, 我們可以在類中設(shè)置鉤子, 輸出日志,從而避免到處var_dump, echo。

代碼(官方文檔中的):

?php
class Singletons{
  // 保存類實例在此屬性中
  private static $instance;
  // 構(gòu)造方法聲明為private,防止直接創(chuàng)建對象
  private function __construct()
  {
    echo 'Iam constructed';
  }
  // singleton 方法
  public static function singleton()
  {
    if (!isset(self::$instance)) {
      $c = __CLASS__;
      self::$instance =new$c;
    }
    return self::$instance;
  }
  // Example類中的普通方法
  public function bark()
  {
    echo 'Woof!';
  }
  // 阻止用戶復(fù)制對象實例
  public function __clone()
  {
    trigger_error('Clone is not allowed.',E_USER_ERROR);
  }
}//endclass singletons
  //這個寫法會出錯,因為構(gòu)造方法被聲明為private
  //$test= new Singletons();
  // 下面將得到Example類的單例對象
  $test= Singletons::singleton();
  $test->bark();
  // 復(fù)制對象將導(dǎo)致一個E_USER_ERROR.
  $test_clone= clone $test;
?>

結(jié)果:

I am constructed!   Woof!
Fatal error:
Clone is not allowed. in E:\APMServ5.2.6\www\htdocs\Lee\myprogram\other\class\singletons.phpon line 31

以下內(nèi)容源自網(wǎng)絡(luò)(可以參考學(xué)習(xí)一下):

單例模式的三個要點:

(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>";
?>

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》

希望本文所述對大家PHP程序設(shè)計有所幫助。

您可能感興趣的文章:
  • PHP單例模式數(shù)據(jù)庫連接類與頁面靜態(tài)化實現(xiàn)方法
  • PHP中數(shù)據(jù)庫單例模式的實現(xiàn)代碼分享
  • PHP基于單例模式實現(xiàn)的數(shù)據(jù)庫操作基類
  • PHP實現(xiàn)單例模式最安全的做法
  • php單例模式的簡單實現(xiàn)方法
  • php利用單例模式實現(xiàn)日志處理類庫
  • PHP基于單例模式編寫PDO類的方法
  • PHP最常用的2種設(shè)計模式工廠模式和單例模式介紹
  • PHP設(shè)計模式之工廠模式與單例模式
  • PHP實現(xiàn)單例模式建立數(shù)據(jù)庫連接的方法分析

標(biāo)簽:綏化 安康 紹興 溫州 金華 清遠(yuǎn) 萊蕪 呼倫貝爾

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP單例模式應(yīng)用示例【多次連接數(shù)據(jù)庫只實例化一次】》,本文關(guān)鍵詞  PHP,單例,模式,應(yīng)用,示例,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP單例模式應(yīng)用示例【多次連接數(shù)據(jù)庫只實例化一次】》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP單例模式應(yīng)用示例【多次連接數(shù)據(jù)庫只實例化一次】的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    十八禁视频网站在线观看| 蜜桃视频欧美| 日本成人a网站| 91精品福利观看| 亚洲性猛交xxxx乱大交| 致1999电视剧免费观看策驰影院| 国产精品你懂的在线观看| 风间由美中文字幕在线看视频国产欧美| 欧美综合社区国产| 欧美日韩福利视频| 欧美精品一级片| 亚洲 欧美 日韩 国产综合 在线| 欧美爱爱视频网站| 日韩精品在线观看一区| 欧美在线观看在线观看| 欧美人与物videos另类xxxxx| 少妇大叫太大太粗太爽了a片小说| 久久综合之合合综合久久| 国产www视频| 91精品国产高潮对白| 中文字幕少妇一区二区三区| 国产精品久久久久久久久免费樱桃| 色网站在线免费观看| www.狠狠色.com| 青娱乐精品在线| 91精品国产色综合久久不8| 97超级碰在线看视频免费在线看| 国产精品香蕉| 91蝌蚪视频在线| 欧美gay男男猛男无套| 国内精品视频一区二区三区八戒| 国产美女黄色| 欧美成人乱码一二三四区免费| 欧美国产美女| 嫩草影院网站在线| 久久久久久婷婷| 日韩无一区二区| 男女超爽视频免费播放| 激情久久久久久久| 成年人免费观看的视频| 亚洲成人动漫在线| 日本va欧美va欧美va精品| 中文字幕一区二区三区在线乱码| 欧美亚洲tv| 日本综合在线观看| av先锋影音资源站| 国产一区二区三区美女| 国产精品久久毛片av大全日韩| 久久精品日产第一区二区三区精品版| 天天射成人网| 国内av在线播放| 中文字幕不卡| 国产一区二区三区奇米久涩| 男女性色大片免费观看一区二区| 日本10禁啪啪无遮挡免费一区二区| 久久久性生活视频| 国产成人精品在线观看| 国产三级免费观看| 69av自拍偷拍| 久久久免费高清视频| 日本伊人午夜精品| 国产特级黄色录像| 亚洲国产一二三区| 亚洲欧洲精品一区二区三区| 亚洲淫片在线视频| 激情在线视频播放| 亚洲欧美成人综合| 久久精品免费一区二区三区| 伊人亚洲视频| 国产一区二区久久久久| 亚洲黄色小说网站| 最新av网站在线观看| 精品国产一区二区三区四区| 蜜桃av一区二区三区| 日韩电影天堂视频一区二区| 国产不卡免费视频| 久久精品免视着国产成人| 校园春色综合网| 亚洲视频欧洲视频| 欧美特级特黄aaaaaa在线看| 免费的国产精品| 久久精品国产亚洲AV熟女| 波霸ol色综合网| 538在线一区二区精品国产| 亚洲欧美电影一区二区| 毛片免费在线播放| 一区二区三区高清| 色播五月综合| 97精品视频在线观看自产线路二| 久久色在线观看| 久久精品99国产精品| 亚洲欧美三级在线| 视频精品一区二区三区| 亚洲高清在线观看一区| 人交獸av完整版在线观看| 国产午夜一区| 久久草av在线| 亚洲欧美高清| 欧美性受xxxx免费视频| 伊人久久久久久久久久久| 夫妇露脸对白88av| 久久中文字幕一区二区三区| 亚洲精品久久久久久无码色欲四季| 欧美性20hd另类| xxx成人少妇69| 人妻久久久一区二区三区| 多人欧美交性姿势| 自拍一级黄色片| av人人综合网| 国产成人精品亚洲午夜麻豆| 麻豆国产尤物av尤物在线观看| 免费中文字幕av| 成人在线免费电影网站| 精品福利视频导航| 激情五月亚洲色图| 亚洲一区二区三区免费视频| 18久久久久久| 五月婷婷开心中文字幕| 日韩成人短视频| 精品无人区乱码1区2区3区在线| 久久免费视频色| 国产精品热久久久久夜色精品三区| 日本亚洲欧洲精品| 国产高清精品一区二区三区| 国产91亚洲精品久久久| 农村少妇一区二区三区四区五区| www激情久久| 伊人影院在线播放| 884aa四虎影成人精品一区| 豆国产97在线|亚洲| 欧美午夜精品理论片a级大开眼界| 成人18在线| www.日韩在线观看| 国产精品一码二码三码在线| 粉嫩aⅴ一区二区三区四区五区| 中文字幕日本三级| 国内视频一区| 3p视频在线观看| 欧美高清另类hdvideosexjaⅴ| 欧美人伦禁忌dvd放荡欲情| 美腿丝袜亚洲一区| h精品动漫在线观看| 水蜜桃在线视频| 狂野欧美性猛交xxxx| 欧美激情成人网| 色尼玛亚洲综合影院| 无码人妻一区二区三区精品视频| 国产一区二区在线播放视频| 免费在线视频一区| 91丨九色丨蝌蚪丨对白| 国产综合色精品一区二区三区| 日韩爱爱小视频| av成人在线观看| 国产精品免费人成网站| 天堂在线免费观看视频| 特大巨黑人吊性xxxxn38| 欧美日韩一区二区在线| 亚洲女性喷水在线观看一区| 亚洲a级在线播放观看| 日韩精品一区二区三区第95| 日韩精品免费在线视频观看| 成人性生交大片免费看视频直播| 国产美女视频免费看| 欧美网色网址| 亚洲综合好骚| 日韩丝袜美女视频| 性欧美video另类hd3| 日本在线免费中文字幕| 欧美绝顶高潮抽搐喷水合集| 成人在线免费观看视频网站| 伊人影院综合网| 影音先锋在线中文| 精品国产视频在线| 亚洲视频大全| 国产福利亚洲| 成人在线电影网| 国产美女免费视频| 国产色产综合色产在线视频| 精品人人视频| 成人黄色综合网站| 成人黄动漫网站免费| 蜜桃av.网站在线观看| 欧美日韩精品是欧美日韩精品| 国产变态拳头交视频一区二区| 91精品国产自产精品男人的天堂| 国产成人精品实拍在线| 欧美亚洲动漫精品| 国产在线观看一区二区三区| 欧美一区二区三区视频在线观看| 欧洲美女免费图片一区| 偷拍自拍在线视频| aa日韩免费精品视频一| 国产女人18毛片水真多成人如厕| 亚洲最新永久观看在线| 亚洲精品视频在线观看视频| 亚洲GV成人无码久久精品| 欧美特黄一级片| 天堂а在线中文在线无限看推荐| 国产精品一区二区在线免费观看| 亚洲精品aaaa| 一本一生久久a久久精品综合蜜| 亚洲va久久| 欧美一区二区三区久久综合| 亚洲精品极品少妇16p| 成人国产精品入口免费视频| 美女一区二区三区| 美日韩一区二区三区| 中文国产一区| 欧美成人精品高清在线播放| ,亚洲人成毛片在线播放| 天堂在线资源视频| a在线视频播放观看免费观看| 欧美性淫爽ww久久久久无| 精品动漫一区二区三区在线观看| 一本色道久久综合无码人妻| 天天躁日日躁成人字幕aⅴ| 欧美日韩aaa| 国产精品视频一区二区三区,| jizz亚洲女人高潮大叫| 国产三级国产精品国产国在线观看| 婷婷综合五月天| 免费黄色国产视频| 日韩精品一区二区视频| 欧美特黄aaaaaaaa大片| 国产精品美女久久久久av爽李琼| 专区另类欧美日韩| 91精彩在线视频| 国产精品毛片a∨一区二区三区| 日韩精品久久久免费观看| 我要看一级黄色大片| 亚洲va欧美va国产综合久久| 中文字幕人妻无码系列第三区| 色欧美自拍视频| www.色多多| 性国产高清在线观看| 亚洲精品大片| 五月婷婷之综合激情| 欧美成人高潮一二区在线看| 中文字幕亚洲综合| 粉嫩欧美一区二区三区| 日韩乱码在线观看| 91女人视频在线观看| 亚洲第一第二区| 午夜久久久久| 亚洲最大黄网| 日韩在线播放一区二区| 欧美不卡一区二区| 欧美疯狂爱爱xxxxbbbb| 无套内精的网站| 欧美日韩免费不卡视频一区二区三区| 精品精品国产高清a毛片牛牛| 一级黄色录像大片| 黄色动漫网站入口| 91福利免费在线| 91高潮精品免费porn| 啪啪亚洲精品| 色综合视频一区二区三区高清| 97精品国产福利一区二区三区| 99久久免费精品高清特色大片| 国语精品中文字幕| 999av小视频在线| www.成人网.com| 福利写真视频网站在线| 久久久久久久久久久久国产| 中文字幕超清在线免费观看| 黄色av片三级三级三级免费看| theporn国产在线精品| 欧美国产日韩xxxxx| 久久精品30| 天干天干啦夜天干天2019| 懂色av一区二区三区蜜臀| 一本大道久久a久久精品综合| 污网站在线观看| 日韩成人中文字幕在线观看| 欧美高清视频在线观看| 免费看h的网站| 日本在线视频一区| 欧美激情一区二区三区免费观看| 国产啪精品视频| 国产精品国三级国产av| 天天综合网天天做天天受| 97成人资源站| 亚洲欧美国产精品va在线观看| 亚洲成人a**址| 日韩中文字幕视频在线观看| 成人午夜精品福利免费| 国产成人愉拍精品久久| 青青草97国产精品免费观看无弹窗版| av在线天堂网| 欧美aaaaaaaa牛牛影院| 蜜桃精品在线观看| 黑人一区二区三区| 国产视频123区| 91亚洲国产成人久久精品麻豆| 26uuu国产在线精品一区二区| 黄色av中文字幕| 日韩精品人妻中文字幕有码| 国产xxx精品视频大全| 日本三级一区| 6080日韩午夜伦伦午夜伦| 亚洲色图 激情小说| 亚洲视频在线观看一区二区| 欧美专区亚洲专区| 久久久久久久久免费看无码| 国产精品夜夜夜爽张柏芝| 国产 日韩 欧美 成人| 国产青青草在线| 亚洲人成网站在线播放2019| 亚洲精品高清视频在线观看| 久久久777精品电影网影网| 欧美人与禽性xxxxx杂性| 日日夜夜一区| 国产精品无码一区二区三| 一区二区亚洲| 亚洲国产一二三精品无码| 欧美日韩国产一区| 97色在线播放视频| www.xxx国产| 男人在线视频资源| 香蕉视频黄色在线观看| 成人av综合网| yiren22亚洲综合伊人22| 青青草视频在线观看免费| 精品爽片免费看久久| 美女av免费观看| 欧美黑人xxxxx| 亚洲一区二区黄色| 精品在线一区|