ThinkPHP 學習筆記(二)

1.命名規範

使用ThinkPHP開發的過程中應該儘量遵循下列命名規範:

☆類文件都是以.class.php爲後綴(這裏是指的ThinkPHP內部使用的類庫文件,不代表外部加載的類庫文件),使用駝峯法命名,並且首字母大寫,例如DbMysql.class.php;

☆確保文件的命名和調用大小寫一致,是由於在類Unix系統上面,對大小寫是敏感的(而ThinkPHP在調試模式下面,即使在Windows平臺也會嚴格檢查大小寫);

類的命名空間地址和所在的路徑地址一致,例如 Home\Controller\UserController類所在的路徑應該是 Application/Home/Controller/UserController.class.php; 

2類名和文件名一致(包括上面說的大小寫一致),例如 UserAction類的文件命名是UserAction.class.php, InfoModel類的文件名是InfoModel.class.php, 並且不同的類庫的類命名有一定的規範;

2函數、配置文件等其他類庫文件之外的一般是以.php爲後綴(第三方引入的不做要求);

2函數的命名使用小寫字母和下劃線的方式,例如 get_client_ip;

2方法的命名使用駝峯法,並且首字母小寫或者使用下劃線“_”,例如 getUserName,_parseType,通常下劃線開頭的方法屬於私有方法;

2屬性的命名使用駝峯法,並且首字母小寫或者使用下劃線“_”,例如 tableName、_instance,通常下劃線開頭的屬性屬於私有屬性;

2以雙下劃線“__”打頭的函數或方法作爲魔法方法,例如 __call 和 __autoload;

2常量以大寫字母和下劃線命名,例如 HAS_ONE和 MANY_TO_MANY;

2配置和下參數以大寫字母劃線命名,例如HTML_CACHE_ON;

2語言變量以大寫字母和下劃線命名,例如MY_LANG,以下劃線打頭的語言變量通常用於系統語言變量,例如 _CLASS_NOT_EXIST_;

2對變量的命名沒有強制的規範,可以根據團隊規範來進行;

2ThinkPHP的模板文件默認是以.html 爲後綴(可以通過配置修改);

2數據表和字段採用小寫加下劃線方式命名,並注意字段名不要以下劃線開頭,例如 think_user 表和 user_name字段,類似 _username 這樣的數據表字段可能會被過濾。

特例:在ThinkPHP裏面,有一個函數命名的特例,就是單字母大寫函數,這類函數通常是某些操作的快捷定義,或者有特殊的作用。

ThinkPHP默認全部使用UTF-8編碼,所以請確保你的程序文件採用UTF-8編碼格式保存,並且去掉BOM信息頭(去掉BOM頭信息有很多方式,不同的編輯器都有設置方法,也可以用工具進行統一檢測和處理),否則可能導致很多意想不到的問題。

2.MVC分層

ThinkPHP中的MVC分層大致體現在:

模型(M):模型的定義由Model類來完成。

控制器(C):應用控制器(核心控制器App類)和Action控制器都承擔了控制器的角色,Action控制器完成業務過程控制,而應用控制器負責調度控制。

視圖(V):由View類和模板文件組成,模板做到了100%分離,可以獨立預覽和製作。

有些時候,ThinkPHP並不依賴M或者V ,也就是說沒有模型或者視圖也一樣可以工作。甚至也不依賴C,這是因爲ThinkPHP在Action之上還有一個總控制器,即App控制器,負責應用的總調度。在沒有C的情況下,必然存在視圖V,否則就不再是一個完整的應用。

3.CBD架構

ThinkPHP3.0版本引入了全新的CBD(核心Core+行爲Behavior+驅動Driver)架構模式,因爲從底層開始,框架就採用核心+行爲+驅動的架構體系,核心保留了最關鍵的部分,並在重要位置設置了標籤用以標記,其他功能都採用行爲擴展和驅動的方式組合,開發人員可以根據自己的需要,對某個標籤位置進行行爲擴展或者替換,就可以方便的定製框架底層,也可以在應用層添加自己的標籤位置和添加應用行。

4.特性概述

值得推薦的特性包括:

2CBD架構:ThinkPHP3.0版本引入了全新的CBD(核心+行爲+驅動)架構模式,打造框架底層DIY定製和類AOP編程體驗。利用這一新的特性,開發人員可以方便地通過模式擴展爲自己量身定製一套屬於自己或者企業的開發框架。

2編譯機制:獨創的項目編譯機制,有效減少OOP開發中文件加載的性能開銷。改進後的項目編譯機制,可以支持編譯文件直接作爲入口載入,並且支持常量外部載入,利於產品發佈。

2類庫導入:採用基於類庫包和命名空間的方式導入類庫,讓類庫導入看起來更加簡單清晰,而且還支持自動加載和別名導入。爲了方便項目的跨平臺移植,系統還可以嚴格檢查加載文件的大小寫。

2URL和路由:系統支持普通模式、PATHINFO模式、REWRITE模式和兼容模式的URL方式,支持不同的服務器和運行模式的部署,配合URL路由功能,讓你隨心所欲的構建需要的URL地址和進行SEO優化工作。支持靈活的規則路由和正則路由,以及路由重定向支持,帶給開發人員更方便靈活的URL優化體驗。

2調試模式:框架提供的調試模式可以方便用於開發過程的不同階段,包括開發、測試和演示等任何需要的情況,不同的應用模式可以配置獨立的項目配置文件。只是小小的性能犧牲就能滿足調試開發過程中的日誌和分析需要,並確保將來的部署順利,一旦切換到部署模式則可以迅速提升性能。

2ORM:簡潔輕巧的ORM實現,配合簡單的CURD以及AR模式,讓開發效率無處不在。

2數據庫:支持包括Mysql、Sqlite、Pgsql、Oracle、SqlServer、Mongo等數據庫,並且內置分佈式數據庫和讀寫分離功能支持。系統支持多數據庫連接和動態切換機制,猶如企業開發的一把利刃,跨數據庫應用和分佈式支持從此無憂。

2查詢語言:內建豐富的查詢機制,包括組合查詢、快捷查詢、複合查詢、區間查詢、統計查詢、定位查詢、多表查詢、子查詢、動態查詢和原生查詢,讓你的數據查詢簡潔高效。

2動態模型:無需創建任何對應的模型類,輕鬆完成CURD操作,支持多種模型之間的動態切換,讓你領略數據操作的無比暢快和最佳體驗。

2擴展模型:提供了豐富的擴展模型,包括:支持序列化字段、文本字段、只讀字段、延遲寫入、樂觀鎖、數據分表等高級特性的高級模型;可以輕鬆動態地創建數據庫視圖的視圖模型;支持關聯操作的關聯模型;支持Mongo數據庫的Mongo模型等等,都可以方便的使用。

2模塊分組:不用擔心大項目的分工協調和部署問題,分組幫你解決跨項目的難題,還可以支持對分組的二級域名部署支持。

2模板引擎:系統內建了一款卓越的基於XML的編譯型模板引擎,支持兩種類型的模板標籤,融合了Smarty和JSP標籤庫的思想,並內置佈局模板功能和標籤庫擴展支持。通過驅動還可以支持Smarty、EaseTemplate、TemplateLite、Smart等其他第三方模板引擎。

2AJAX支持:內置和客戶端無關的AJAX數據返回方法,支持JSON、XML和EVAL類型返回客戶端,而且可以擴展返回數據格式,系統不綁定任何AJAX類庫,可隨意使用自己熟悉的AJAX類庫進行操作。

2SAE支持:提供了新浪SAE平臺的強力支持,具備“橫跨性”和“平滑性”,支持本地化開發和調試以及部署切換,讓你輕鬆過渡到SAE開發,打造全新的SAE開發體驗。

2RESTFul支持:REST模式提供了RESTFul支持,爲你打造全新的URL設計和訪問體驗,同時爲接口應用提供了支持。

2多語言支持:系統支持語言包功能,項目和分組都可以有單獨的語言包,並且可以自動檢測瀏覽器語言自動載入對應的語言包。

2模式擴展:除了標準模式外,還提供了AMF、PHPRpc、Lite、Thin和Cli模式擴展支持,針對不同級別的應用開發提供最佳核心框架,還可以自定義模式擴展。

2自動驗證和完成:自動完成表單數據的驗證和過濾,新版新增了IP驗證和有效期驗證等更多的驗證方式,配合自動完成可以生成安全的數據對象。

2字段類型檢測:系統會自動緩存字段信息和字段類型,支持非法字段過濾和字段類型強制轉換,確保數據寫入和查詢更安全。

2緩存機制:系統支持包括文件方式、APC、Db、Memcache、Shmop、Sqlite、Redis、Eaccelerator和Xcache在內的動態數據緩存類型,以及可定製的靜態緩存規則,並提供了快捷方法進行存取操作。

2擴展機制:系統支持包括模式擴展、行爲擴展、類庫擴展、驅動擴展、模型擴展、控制器擴展、Widget擴展在內的強大靈活的擴展機制,讓你不再受限於核心的不足和無所適從,隨心DIY自己的框架和擴展應用,滿足企業開發中更加複雜的項目需求。

5.開發流程

使用ThinkPHP創建應用的一般開發流程是:

系統設計、創建數據庫和數據表;(可選)

項目命名並創建項目入口文件,開啓調試模式;

完成項目配置;

創建項目函數庫;(可選)

開發項目需要的擴展(模式、驅動、標籤庫等);(可選)

創建控制器類;

創建模型類;(可選)

創建模板文件;

運行和調試、分析日誌;

開發和設置緩存功能;(可選)

添加路由支持;(可選)

安全檢查;(可選 )

部署到生產環境。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章