亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

PHP單例模式數據庫連接類與頁面靜態化實現方法

2024-05-05 00:07:40
字體:
來源:轉載
供稿:網友

本文實例講述了PHP單例模式數據庫連接類與頁面靜態化實現方法。分享給大家供大家參考,具體如下:

數據庫test中數據表account內容

PHP,單例模式,數據庫,頁面靜態化

單例模式的數據庫連接類

db.php

<?php//單例模式的數據庫連接class DB {  //存儲實例的靜態成員變量  static public $_instance;  //數據庫連接靜態變量  static public $_connectSource;  //連接數據庫配置,由于前幾天學習了PDO,這里就使用PDO  private $_dbConfig = array(    'host' => 'localhost',    'user' = > 'root',    'password' => '',    'database' => 'test'  );  //禁止外部實例化  private function __construct() {  }  //實例化  public static function getInstance() {    if(self::$_instance instanceof self) {      return self::$_instance;    }    self::$_instance = new self();    return self::$_instance;  }  //數據庫連接  public function connect() {    //如果不存在數據庫連接就創建一個    if(!self::$_connectSource) {      try {        $dsn = 'mysql:host='.$this->_dbConfig['host'].';dbname='.$this->_dbConfig['database'];        $username = $this->_dbConfig['user'];        $password = $this->_dbConfig['password'];        self::$_connectSource = new PDO($dsn, $username, $password);      }catch(PDOException $e) {        echo $e->getMessage();      }    }    return self::$_connectSource;  }}?>

PHP實現頁面靜態化的例子

其實原理很簡單,這里用到了幾個函數,ob_start()ob_get_contents(),file_put_contents()ob_start()是開啟緩沖區的意思,ob_get_contents()是得到緩沖區內容的意思,file_put_contents()是把內容放到一個文件里的意思,如果不理解緩沖區的意思,可以自行百度一下,我理解的緩沖區就是,當我們要在PHP中輸出一些數據顯示出來時,會先經過緩沖區,而我們可以從緩沖區中得到這些內容。所以實現純靜態頁面的方法就是,獲取緩沖區中的內容放到一個靜態文件中,并在入口中根據需求設置訪問動態文件還是靜態文件,這種方法一般用于數據不經常變化的動態頁面中。下面就來具體的實現這個功能。

static.php

<?php//1.使用剛才寫的數據庫連接類連接數據庫//2.把獲取到的數據填充到模板文件中//3.把頁面轉化為靜態文件//如果我們本地有這個靜態文件并且這個文件生成的時間小于5分鐘那么就去訪問這個靜態文件,filemtime()用來獲取文件的最后修改時間if(is_file('./static.shtml') && (time() - filemtime('./static.shtml')) < 300) {  //這里很簡單,直接把靜態文件拿過來  require_once('./static.shtml');}else {//如果不存在這個靜態文件,或者這個靜態文件的最后修改時間距離現在已經超過了5分鐘,那么就訪問動態獲取數據的模板,然后更新static.shtml文件的內容  //連接數據庫  header('Content-Type:text/html;charset=utf-8');  require_once('./db.php');  $connect = DB::getInstance()->connect();  //執行查詢操作  $sql = 'select * from account';  $res = $connect->query($sql);  //開啟緩沖區  ob_start();  //ob_get_clean()這個函數可以獲取緩沖區的內容并清空,一會我會測試一下ob_get_clean()和ob_get_contents()的  require_once('./static_show.php');  //把緩沖區的內容寫入到靜態文件  file_put_contents('./static.shtml', ob_get_contents());}?>

動態展示模板文件static_show.php

<?php  foreach($res as $row) {    echo '名字:'.$row['name'].'<br/>';    echo '錢包:'.$row['money'].'<br/>';    echo '<hr/>';  }?>

當我們訪問static.php的時候,因為沒有static.shtml,所以會先執行else的操作,展示在static_show.php并生成static.shtml文件

PHP,單例模式,數據庫,頁面靜態化

如果這時候我把數據庫修改了,zjp的money改為800,然后再訪問static.php會展示什么樣的內容呢,沒錯,zjp的錢包還是600,為什么呢,因為它執行了if中的內容,直接顯示了static.shtml,我們可以看一下static.shtml是什么樣的:

PHP,單例模式,數據庫,頁面靜態化

如果5分鐘過后再訪問staitc.php呢,會顯示什么呢,沒錯!zjp的錢包就變成800了,并且static.shtml的內容會更新為zjp的錢包是800。

測試ob_get_clean()和ob_get_contents()

測試方法很簡單:

<?php$test = 'Hello World!';//開啟緩沖區ob_start();//測試ob_get_contents()echo $test;echo ob_get_contents();//輸出結果:Hello World!Hello World!//測試ob_get_clean()echo $test;echo ob_get_clean();//輸出結果:Hello World!echo $test;ob_get_clean();//輸出結果:?>

這樣就可以很清楚的看出來了,當我們使用了ob_get_clean()的時候,輸出語句并不會輸出任何值,因為ob_get_clean()會獲取緩沖區中的內容并將緩沖區清空。所以當我們echo test的時候并沒有得到test的時候并沒有得到test的值,echo ob_get_clean()的時候卻能夠獲取到值。而當我們使用ob_get_contents()的時候緩沖區中的內容并沒有被清空。

實際上,ob_get_clean()函數相當于執行了,ob_get_contents()ob_end_clean()

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


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文.日本.精品| 美女久久久久久久| 欧美久久精品午夜青青大伊人| 国产精品成人va在线观看| 久久久免费精品| 66m—66摸成人免费视频| 日产日韩在线亚洲欧美| 国产专区欧美专区| 国产91精品在线播放| 欧美性猛交xxxx乱大交极品| 久久综合伊人77777| 亚洲护士老师的毛茸茸最新章节| 久久综合伊人77777| 日韩在线视频国产| 欧美精品在线免费观看| 日本成人免费在线| 亚洲福利视频在线| 国产一区二区三区网站| 亚洲自拍偷拍视频| 国产精品午夜一区二区欲梦| 亚洲一区999| 91久久中文字幕| 欧美一区二区大胆人体摄影专业网站| 亚洲免费成人av电影| 国产噜噜噜噜噜久久久久久久久| 国产亚洲精品久久久久久牛牛| 2019中文在线观看| 日日狠狠久久偷偷四色综合免费| 欧美午夜激情视频| 亚洲精品按摩视频| 国产97色在线|日韩| 国内精品伊人久久| 国内精品视频在线| 亚洲激情电影中文字幕| 亚洲精品欧美日韩专区| 国产精品日日做人人爱| 亚洲欧美福利视频| 热re91久久精品国99热蜜臀| 在线播放日韩精品| 欧美成在线视频| 岛国av一区二区在线在线观看| 操日韩av在线电影| 欧美乱大交xxxxx另类电影| 在线观看精品自拍私拍| 亚洲级视频在线观看免费1级| 日韩国产一区三区| 久久久久久91香蕉国产| 国产91对白在线播放| 成人精品在线观看| 欧美理论片在线观看| 亚洲欧美精品一区| 国产精品444| 久久久久久网址| 国产成人免费91av在线| 亚洲a级在线观看| 日韩中文在线中文网三级| 国内精品免费午夜毛片| 亚洲福利视频免费观看| 亚洲成在人线av| 性日韩欧美在线视频| 国产视频精品xxxx| 伦伦影院午夜日韩欧美限制| 国产精品久久久久久久久久免费| 精品一区精品二区| 久久久久亚洲精品成人网小说| 97人人爽人人喊人人模波多| 在线观看日韩专区| 欧美色图在线视频| 国产亚洲精品久久久久久777| 日韩中文在线中文网三级| 国产欧美欧洲在线观看| 日韩在线免费观看视频| 97国产真实伦对白精彩视频8| 91在线无精精品一区二区| 国产亚洲欧洲高清一区| 亚洲永久在线观看| 国产日韩在线亚洲字幕中文| 九九热最新视频//这里只有精品| 91国产精品电影| 日韩成人高清在线| 青青久久aⅴ北条麻妃| 91精品国产91久久久久久吃药| 成人激情电影一区二区| 国产精品扒开腿做| 欧美人与物videos| 久久精品男人天堂| 韩国一区二区电影| 国产成人精品亚洲精品| 最近中文字幕2019免费| 亚洲高清不卡av| 亚洲福利视频二区| 亚洲激情在线视频| 97精品一区二区视频在线观看| 亚洲最大福利视频| 欧美日韩福利视频| 日本一区二区在线免费播放| 尤物99国产成人精品视频| 精品视频—区二区三区免费| 国产伦精品一区二区三区精品视频| 国产日韩欧美视频在线| 97视频在线免费观看| 成人有码视频在线播放| 久久久久久久久91| 中文字幕精品www乱入免费视频| 欧美最猛性xxxxx亚洲精品| 欧美精品在线极品| 97人人做人人爱| 中文字幕日韩精品有码视频| 中文字幕免费精品一区| 91福利视频在线观看| 色偷偷偷亚洲综合网另类| 欧美裸体视频网站| 日韩av在线网址| 久久综合88中文色鬼| 日韩亚洲精品电影| 久久国产精品久久久久久| 国产精品入口日韩视频大尺度| 亚洲资源在线看| 亚洲美女又黄又爽在线观看| 黄色91在线观看| 日韩综合中文字幕| 国产丝袜精品第一页| 91po在线观看91精品国产性色| 91免费的视频在线播放| 亚洲最新av在线| 国产精品国产三级国产aⅴ浪潮| 日韩电影中文字幕一区| 亚洲国产女人aaa毛片在线| 欧美激情一区二区三区在线视频观看| 国产成人精品久久二区二区91| 91av福利视频| 亚洲欧美激情另类校园| 久久久伊人欧美| 欧美做受高潮电影o| 国产精品日日摸夜夜添夜夜av| 欧美高清一级大片| 国产精品久久久久久久久男| 色777狠狠综合秋免鲁丝| 欧美乱大交xxxxx另类电影| 亚洲欧洲日本专区| 久久久免费精品| 久久久久久欧美| 68精品久久久久久欧美| 亚州欧美日韩中文视频| 欧美激情在线播放| 欧美激情久久久久久| 色婷婷综合久久久久中文字幕1| 日本精品久久中文字幕佐佐木| 97欧美精品一区二区三区| 91精品在线播放| 国产女精品视频网站免费| 国产精品成av人在线视午夜片| 精品国产欧美一区二区三区成人| 992tv成人免费影院| 成人激情视频在线播放| 亚洲欧美日韩天堂一区二区| 欧美丰满少妇xxxxx做受| 欧美午夜精品久久久久久浪潮| 亚洲热线99精品视频| 久久精品国产清自在天天线| 日韩在线观看免费全集电视剧网站| 精品欧美国产一区二区三区| 中文字幕综合在线| 91精品国产高清自在线看超|