摘要:概述謝謝大家的收藏與贊,這是對(duì)我最大的鼓勵(lì)。這一系列文章主要是一些常用的類操作,回顧一下面向?qū)ο?,我一直致力于小白文章的撰寫,因?yàn)槲乙彩切“祝嘈庞腥诵枰?,希望讀者能夠喜歡。
概述
謝謝大家的收藏與贊,這是對(duì)我最大的鼓勵(lì)。說(shuō)明這一系列文章主要是一些PHP常用的類操作,回顧一下面向?qū)ο?,我一直致力于小白文章的撰寫,因?yàn)槲乙彩切“?,相信有人需要,希望讀者能夠喜歡。
關(guān)于PHP語(yǔ)言實(shí)現(xiàn)各種操作類,網(wǎng)上都能夠找得到,但是質(zhì)量參差不齊,有的代碼不好懂,有時(shí)候看的眼花繚亂,所以我在這里統(tǒng)一作了一個(gè)整理(注意:是整理,每一種操作類,我至少會(huì)參考三份優(yōu)秀代碼,然后自己跑出來(lái),而不是CV)
我會(huì)盡量遵守PSR規(guī)范,會(huì)有很詳細(xì)易懂的注釋
對(duì)于其中涉及到的相關(guān)知識(shí)點(diǎn),比如設(shè)計(jì)模式,類型檢測(cè)、瀏覽器架構(gòu)、通信數(shù)據(jù)我也會(huì)簡(jiǎn)單講講,并留下相關(guān)鏈接,希望讀者能夠細(xì)嚼慢咽
閱讀準(zhǔn)備內(nèi)容涉及面向?qū)ο?、?shù)據(jù)庫(kù)、文件操作、購(gòu)物車、分頁(yè)、圖像處理、JSON數(shù)據(jù)接口,你可能需要有一點(diǎn)知識(shí)基礎(chǔ),當(dāng)然,這些內(nèi)容都是獨(dú)立的,可以選擇性的參看。
Source CodeDATABASE = $dbname; /* 判斷數(shù)據(jù)庫(kù)是否連接 */ if(!self::$resource){ self::$resource = mysqli_connect($this->HOST,$this->USER,$this->ROOT,$this->DATABASE); /* 如果數(shù)據(jù)庫(kù)連接失敗 */ if(!self::$resource){ throw new Execption("mysql connect error".mysqli_connect_error()); } /* 設(shè)置編碼 */ mysqli_query(self::$resource,"set names UTF8"); } return self::$resource; } } /**********Coding 1********************* $res = DB::getInstance()->connect("base"); print_r($res); die; ********************************/ /**********Coding 2********************* $res = new DB(); $res::getInstance()->connect(); 因?yàn)闃?gòu)造函數(shù)的私有性,這一句會(huì)產(chǎn)生fatal error 錯(cuò)誤 ********************************/ /**********Coding 3********************* $a = DB::getInstance(); $a->connect(); $b = DB::getInstance(); $b->connect(); echo ""; print_r($a); print_r($b); 只會(huì)執(zhí)行一次構(gòu)造函數(shù),說(shuō)明$a $b是類的同一個(gè)實(shí)例 ********************************/解析如果不看構(gòu)造函數(shù)和getInstance方法,其實(shí)可以看的出來(lái),實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作類很簡(jiǎn)單,只需要把數(shù)據(jù)庫(kù)連接函數(shù)的參數(shù)當(dāng)作類成員變量,然后調(diào)用就行了,但是這里用了一個(gè)簡(jiǎn)單的設(shè)計(jì)模式——單例模式,總之加上它,代碼會(huì)更便捷、健壯,下面簡(jiǎn)單講講。
為什么使用單例模式?其實(shí)從技術(shù)上考慮主要是考慮節(jié)省內(nèi)存資源(因?yàn)樵L問(wèn)數(shù)據(jù)庫(kù)的話我們實(shí)例一次就夠了,不需要重復(fù)實(shí)例[2019.5.28 update]),提升系統(tǒng)性能,但實(shí)際能夠感受到的就是更方便,而且逼格高一些,所以用它。
什么是單例模式?舉個(gè)例子,就是大樓只有一個(gè)入口,方便控制,用面向?qū)ο髞?lái)說(shuō),就是一個(gè)類只有一個(gè)實(shí)例,方便管理。
代碼部分是怎么實(shí)現(xiàn)單例模式的?首先聲明一個(gè)私有構(gòu)造函數(shù),這樣就不能在外面使用 new 來(lái)實(shí)例化多個(gè)對(duì)象了,你可以用coding 2的代碼試一試,會(huì)報(bào)錯(cuò)
構(gòu)造一個(gè)公共入口來(lái)獲取類的實(shí)例,總的有實(shí)例可用撒,注意這個(gè)self指的是當(dāng)前類,instanceof是檢查當(dāng)前變量是否為類的實(shí)例
如何檢查單例效果?你可以用coding 3的代碼查看輸出結(jié)果,然后你會(huì)發(fā)現(xiàn)構(gòu)造函數(shù)只執(zhí)行了一次,說(shuō)明,第一次實(shí)例化對(duì)象之后,后面的變量對(duì)對(duì)象的引用是一致的,說(shuō)明實(shí)例實(shí)際上只有一個(gè)。
為什么getInstance方法是靜態(tài)的呢?函數(shù)也是變量,靜態(tài)化變量,不管引用多少次,都不會(huì)重復(fù)生成,比較節(jié)省空間,這里并不考慮多線程的問(wèn)題。
參考鏈接PHP 單例模式解析和實(shí)戰(zhàn)
結(jié)語(yǔ)
PHP 設(shè)計(jì)模式 單例模式
單例模式5種實(shí)現(xiàn)方式
語(yǔ)言中,靜態(tài)方法和非靜態(tài)方法你懂多少?有沒懂的或者又覺得不對(duì)的,歡迎大家留言。
最后我會(huì)把源代碼放在GitHub主頁(yè)上,別擔(dān)心,是中文,有需要的可以訪問(wèn)下載.
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/23219.html
摘要:概述謝謝大家的收藏與贊,這是對(duì)我最大的鼓勵(lì)。這一系列文章主要是一些常用的類操作,回顧一下面向?qū)ο?,我一直致力于小白文章的撰寫,因?yàn)槲乙彩切“?,相信有人需要,希望讀者能夠喜歡。 概述 謝謝大家的收藏與贊,這是對(duì)我最大的鼓勵(lì)。這一系列文章主要是一些PHP常用的類操作,回顧一下面向?qū)ο?,我一直致力于小白文章的撰寫,因?yàn)槲乙彩切“?,相信有人需要,希望讀者能夠喜歡。 說(shuō)明 關(guān)于PHP語(yǔ)言實(shí)現(xiàn)...
摘要:驗(yàn)證碼是什么驗(yàn)證碼是自動(dòng)區(qū)分計(jì)算機(jī)和人類的圖靈測(cè)試的縮寫,是一種區(qū)分用戶是計(jì)算機(jī)和人的全自動(dòng)程序。驗(yàn)證碼的種類文字?jǐn)?shù)字字母統(tǒng)稱字符圖片語(yǔ)音手勢(shì)對(duì)于不同的驗(yàn)證碼,驗(yàn)證的設(shè)計(jì)思路是一致的,我們以字符為例。 概述 謝謝大家的收藏與贊,這是對(duì)我最大的鼓勵(lì)。 這一系列文章主要是一些PHP常用的類操作,回顧一下面向?qū)ο螅乙恢敝铝τ谛“孜恼碌淖珜?,因?yàn)槲乙彩切“祝嘈庞腥诵枰?,希望讀者能夠喜歡。...
摘要:方式是最常用也是最直接的通常用于方法,其實(shí)我認(rèn)為中的表單實(shí)質(zhì)上也是方式,但這種傳輸方式數(shù)據(jù)有限,也不規(guī)范,只適合一些簡(jiǎn)單場(chǎng)景。如何封裝上面講了,和是目前主流的通信數(shù)據(jù)格式,下面就來(lái)講講如何封裝,方便運(yùn)用。 謝謝大家的收藏與贊,這是對(duì)我最大的鼓勵(lì)。 必要性 不管在B/S架構(gòu)中,還是C/S架構(gòu)中,兩端的數(shù)據(jù)通信(注:這里的通信是指的網(wǎng)絡(luò)請(qǐng)求和回復(fù)操作)都無(wú)可避免,因?yàn)闆]有數(shù)據(jù)便沒有內(nèi)容,沒...
摘要:方式是最常用也是最直接的通常用于方法,其實(shí)我認(rèn)為中的表單實(shí)質(zhì)上也是方式,但這種傳輸方式數(shù)據(jù)有限,也不規(guī)范,只適合一些簡(jiǎn)單場(chǎng)景。如何封裝上面講了,和是目前主流的通信數(shù)據(jù)格式,下面就來(lái)講講如何封裝,方便運(yùn)用。 謝謝大家的收藏與贊,這是對(duì)我最大的鼓勵(lì)。 必要性 不管在B/S架構(gòu)中,還是C/S架構(gòu)中,兩端的數(shù)據(jù)通信(注:這里的通信是指的網(wǎng)絡(luò)請(qǐng)求和回復(fù)操作)都無(wú)可避免,因?yàn)闆]有數(shù)據(jù)便沒有內(nèi)容,沒...
閱讀 724·2021-11-22 13:52
閱讀 1532·2021-09-27 13:36
閱讀 2834·2021-09-24 09:47
閱讀 2193·2021-09-22 15:48
閱讀 3609·2021-09-22 15:39
閱讀 1475·2019-08-30 12:43
閱讀 2929·2019-08-29 18:39
閱讀 3197·2019-08-29 12:51