亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
博主信息
博文 41
粉絲 2
評(píng)論 0
訪問量 36666
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
php之單例模式連接數(shù)據(jù)庫(kù)
月光下,遺忘黑暗
原創(chuàng)
1104人瀏覽過

代碼塊

<?php/** * PHP語言是一種解釋型的腳本語言,這種運(yùn)行機(jī)制使得每個(gè)PHP頁面被解釋執(zhí)行后,所有的相關(guān)資源都會(huì)被回收。也就是說,PHP在語言級(jí)別上沒有辦法讓某個(gè)對(duì)象常駐內(nèi)存,這和asp.net、Java等編譯型是不同的,比如在Java中單例會(huì)一直存在于整個(gè)應(yīng)用程序的生命周期里,變量是跨頁面級(jí)的,真正可以做到這個(gè)實(shí)例在應(yīng)用程序生命周期中的唯一性。然而在PHP中,所有的變量無論是全局變量還是類的靜態(tài)成員,都是頁面級(jí)的,每次頁面被執(zhí)行時(shí),都會(huì)重新建立新的對(duì)象,都會(huì)在頁面執(zhí)行完畢后被清空,這樣似乎PHP單例模式就沒有什么意義了 * */ //PHP單例模式只是針對(duì)單次頁面級(jí)請(qǐng)求時(shí),出現(xiàn)多個(gè)應(yīng)用場(chǎng)景并需要共享同一對(duì)象資源時(shí)是非常有意義的。/** * 面向?qū)ο缶幊倘筇匦? * 1. 封裝 可見性  php中使用3種類型的可見性 : private(私有), protected(保護(hù)),public(公共) * 封裝一個(gè)程序元素, 把它設(shè)為private,僅在本類中可見,還可以把它設(shè)為protected,允許本類及其子類訪問該屬性; 要訪問封裝的對(duì)象, 必須提供公有的可見性. 想要作為一個(gè)真正有用的類, 必須至少提供一些方法是可見的(即使只是構(gòu)造函數(shù)) *  *  * 2. 繼承 inheritance * 一個(gè)類擴(kuò)展另一個(gè)類,前者會(huì)擁有后者的所有屬性和方法. * php oop具有單繼承的特點(diǎn) -> 帶來程序的高耦合性:如果程序通過深層次繼承綁定到具體類,即使對(duì)父類做簡(jiǎn)單的修改,也會(huì)對(duì)子類帶來嚴(yán)重的破壞 -> 解決辦法: 1. 為了保證類之間的松綁定,通常會(huì)繼承抽象類,而且是淺繼承,即只有一層子類. 2. 引入trait結(jié)構(gòu) *  *  * 3. 多態(tài) polymorphism  多態(tài)只有在oop上下文中討論才有意義,多態(tài)真正價(jià)值在于,可以調(diào)用有相同接口的對(duì)象完成不同的工作.   基于一個(gè)公共接口, 在一個(gè)給定的程序結(jié)構(gòu)中做出修改或增補(bǔ)時(shí), 可以放心遞請(qǐng)求或使用接口方法而不必?fù)?dān)心程序會(huì)崩潰  一個(gè)名字多個(gè)實(shí)現(xiàn) *  *  * 接口通常允許開發(fā)人員創(chuàng)建松綁定的對(duì)象和類,php接口允許儲(chǔ)存常量,實(shí)現(xiàn)接口的類都可以使用接口中儲(chǔ)存的常量 */ //單例模式連接數(shù)據(jù)庫(kù)  應(yīng)用程序與數(shù)據(jù)庫(kù)交互 interface iDbBase {    //  數(shù)據(jù)庫(kù)操作  curd     static function insert($db);    static function select($db,$where=[]);    static function delete($db,$where=[]);    static function update($db,$data,$where);    static function doConnect($dsn,$username,$password);    // return $this;實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用 } //使用單例模式連接數(shù)據(jù)庫(kù) abstract class aDb implements iDbBase {     //創(chuàng)建類的唯一實(shí)例 唯一對(duì)象     private static $instance;//保存返回的pdo連接對(duì)象     //private關(guān)鍵字 阻止此類在外部進(jìn)行實(shí)例化     private function __construct()     {     }     //private關(guān)鍵字阻止此類在外部進(jìn)行克隆     private function __clone()     {     }     //只能由類的自身 來進(jìn)行實(shí)例化      static function doConnect($dsn,$username,$password){        //判斷$instance是否是aDb類的對(duì)象        if(is_null(self::$instance))         {            // echo 'aaaa';            //實(shí)例化本類, 傳入連接參數(shù),             self::$instance = new PDO($dsn,$username,$password);        }        return self::$instance;    } } //客戶端代碼// $config = [//     'type'=> $type ?? 'mysql',//     'host'=> $host ?? 'localhost',//     'dbname'=> $dbname ?? 'news',//     'username'=> $username ?? 'root',//     'password'=> $password ?? 'zhoujielun521'// ];// $dsn = sprintf('%s:host=%s;dbname=%s',$config['type'],$config['host'],$config['dbname']);// $username = $config['username'];// $password = $config['password'];// // aDb::doConnect($dsn,$username,$password);// for ($i=0; $i < 10; $i++) { //     aDb::doConnect($dsn,$username,$password);// }//工作類class Db extends aDb{     //  數(shù)據(jù)庫(kù)操作  curd      static function insert($db)     {        return $db->query('insert into `admins`(`username`,`password`,`truename`,`gid`,`add_time`) value("asd","fdsa","dsadsas",2,4213) ')->fetchAll(PDO::FETCH_ASSOC);     }     static function select($db,$where=[])     {        return $db->query('SELECT * FROM `iuser` LIMIT 3')->fetchAll(PDO::FETCH_ASSOC);     }     static function delete($db,$where=[])     {     }     static function update($db,$data,$where)     {     }}//客戶端代碼$config = [    'type'=> $type ?? 'mysql',    'host'=> $host ?? 'localhost',    'dbname'=> $dbname ?? 'video',    'username'=> $username ?? 'root',    'password'=> $password ?? 'root'];$dsn = sprintf('%s:host=%s;dbname=%s',$config['type'],$config['host'],$config['dbname']);$username = $config['username'];$password = $config['password'];//獲取pdo連接對(duì)象$db = Db::doConnect($dsn,$username,$password);echo '<pre>';print_r(Db::insert($db,));

效果

批改老師:滅絕師太滅絕師太

批改狀態(tài):合格

老師批語:$pdo->query()方法一般用來執(zhí)行select sql語句, 返回pdoStatement對(duì)象(結(jié)果集); 對(duì)于insert delete update語句, 一般使用$pdo->exec($sql);返回受影響的行數(shù).
本博文版權(quán)歸博主所有,轉(zhuǎn)載請(qǐng)注明地址!如有侵權(quán)、違法,請(qǐng)聯(lián)系admin@php.cn舉報(bào)處理!
全部評(píng)論 文明上網(wǎng)理性發(fā)言,請(qǐng)遵守新聞評(píng)論服務(wù)協(xié)議
0條評(píng)論
作者最新博文
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長(zhǎng)!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)

  • 登錄PHP中文網(wǎng),和優(yōu)秀的人一起學(xué)習(xí)!
    全站2000+教程免費(fèi)學(xué)