thinkphp 執行機制:
應用模式和狀態:
(沒有定義相應常量則不載入)
當然,我們也可以通過擴充套件配置來新增自己的配置檔案
// 載入擴充套件配置檔案
'load_ext_config' => 'user,db',
多層mvc:
模組化設計思想。也是主要運用thinkphp的原因。thinkphp是模組/控制器/操作:movice/index/index的理念,他可以先分大的模組,模組裡面在實現獨立的mvc,當然模組裡面還可以實現複雜的邏輯層、資料層等複雜結構的劃分,
只需要通過d函式加引數訪問,如:d(『userlogic』, 『logic』)訪問的就是邏輯層。
驅動機制:
驅動思想的新增,讓我們可以在框架上擴充套件自己的引擎實現。我們只需要在config裡面配置相應的選項,就可以實現自己的引擎實現。類似於工廠模式。驅動機制的結構如圖:
下面是乙個模板引擎擴充套件的示例:
檔案內容:
twig是乙個模板分離引擎,我們把原始檔放到vendor資料夾裡面,在template/drvier下建立twig,並實現fetch功能,就製作好了新的模板驅動,此時,我們在配置檔案中設定:』tmpl_engine_type』 =>』twig』,就可以用twig模板引擎了。詳見:
鉤子機制:
類似於觀察者模式。通過配置檔案,把行為掛到hook類上,然後,當**出發鉤子的標籤時,執行掛在到該標籤上的所有行為。如下圖:
這種思路的加入,可以打破程式死板流程的限制,做一些獨立行為,通過此種方式呼叫。
cbd模式:
核心—行為-驅動的分層。就是上面說的鉤子機制和驅動機制,整個框架按照這三塊來分層,以便提供比較多的可擴充套件方式。
thinkphp的問題:
1.架構不靈活。thinkphp自己實現了全自動化執行,這樣導致,你必須按照他的解析流程執行**,在他規定的框架內實現,有很大的侷限性,例如單元測試的新增,新的執行流程的實現,
2.大量使用全域性常量。thinkphp中大量使用了全域性常量,這導致使用它的類依託於全域性變數的設定,損失了類本身的封裝性,造成比較高的耦合態。
3. 細節**質量不高。thinkphp作為乙個框架,整體架構設計還是挺合理的,但具體**寫的真是水平不高。建議好好研究細化。
4. 環境強制準備太多,也影響執行速度。
FLASH設計思想
flash 設計思想 在中國的發展經歷了 5年的時間,起初只是一些愛好者出於個人興趣製作的 flash 作品,傳到網上以供網民瀏覽,因為更多的人喜好這種表現形式,以及商家對網路發展態勢的看好,早期的那些創作者開始承接商業廣告。自此,flash 廣告的製作逐漸興盛。flash 作為一款向量圖形和動畫製...
js設計思想
程式是什麼?生活中的程式 1 宿舍保修 填寫維修單 商報宿舍管理員 聯絡物業 找師傅上門維修 反饋 2 銀行開戶 客戶填寫開戶申請單 提交證件資料 審核資料真實性第一種 如果是本人 資料真實齊全則通過 第二種 其他人代辦 有委託書 資料真實齊全則通過。不滿足則拒絕 錄入系統開戶 設定密碼 發放卡 存...
linux unix設計思想
看了 linux unix設計思想 這本書,覺得書的大部分內容都閒扯的太遠了,以下簡單的總結下本書的核心,幫助大家節省時間和金錢。linux unix設計思想 1 程式應該小而專一,程式應該盡量的小,且只專注於一件事上,不要開發那些看起來有用但是90 的情況都用不到的特性 2 程式不只要考慮效能,程...