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