終於脫離部隊了,從今天開始,好好學習ThinkPHP,紀念一下。
1.簡介
ThinkPHP是一個免費開源的,快速、簡單的面向對象的輕量級PHP開發框架,遵循Apache2開源協議發佈,是爲了敏捷WEB應用開發和簡化企業應用開發而誕生的。
2. 基礎概念
● LAMP
LAMP是基於Linux,Apache,MySQL和PHP的開放資源網絡開發平臺。Linux是開放系統;Apache是最通用的網絡服務器;MySQL是帶有基於網絡管理附加工具的關係數據庫;PHP是流行的對象腳本語言。
●OOP
面向對象編程(Object Oriented Programming,OOP,面向對象程序設計)是一種計算機編程架構。OOP 的一條基本原則是計算機程序是由單個能夠起到子程序作用的單元或對象組合而成。OOP 達到了軟件工程的三個主要目標:重用性、靈活性和擴展性。
●MVC
MVC是一個設計模式,它強制性的使應用程序的輸入、處理和輸出分開。使用MVC應用程序被分成三個核心部件:模型(M)、視圖(V)、控制器(C),它們各自處理自己的任務。
視圖 :視圖是用戶看到並與之交互的界面。MVC一個大的好處是它能爲你的應用程序處理很多不同的視圖。在視圖中其實沒有真正的處理髮生,不管這些數據是聯機存儲的還是一個僱員列表,作爲視圖來講,它只是作爲一種輸出數據並允許用戶操縱的方式。
模型 :模型表示企業數據和業務規則。在MVC的三個部件中,模型擁有最多的處理任務。被模型返回的數據是中立的,就是說模型與數據格式無關,這樣一個模型能爲多個視圖提供數據。由於應用於模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重複性。
控制器 :控制器接受用戶的輸入並調用模型和視圖去完成用戶的需求。
現在我們總結MVC的處理過程,首先控制器接收用戶的請求,並決定應該調用哪個模型來進行處理,然後模型用業務邏輯來處理用戶的請求並返回數據,最後控制器用相應的視圖格式化模型返回的數據,並通過表示層呈現給用戶。
●ORM
對象-關係映射(Object/Relation Mapping,簡稱ORM),是隨着面向對象的軟件開發方法發展而產生的。面向對象的開發方法是當今企業級應用開發環境中的主流開發方法,關係數據庫是企業級應用環境中永久存放數據的主流數據存儲系統。對象和關係數據是業務實體的兩種表現形式,業務實體在內存中表現爲對象,在數據庫中表現爲關係數據。內存中的對象之間存在關聯和繼承關係,而在數據庫中,關係數據無法直接表達多對多關聯和繼承關係。因此,對象-關係映射(ORM)系統一般以中間件的形式存在,主要實現程序對象到關係數據庫數據的映射。
●AOP
AOP(Aspect-Oriented Programming,面向方面編程),可以說是OOP(Object-Oriented Programing,面向對象編程)的補充和完善。
●CURD
CURD是一個數據庫技術中的縮寫詞,一般的項目開發的各種參數的基本功能都是CURD。它代表創建(Create)、更新(Update)、讀取(Read)和刪除(Delete)操作。
●ActiveRecord
Active Record(中文名:活動記錄)是一種領域模型模式,特點是一個模型類對應關係型數據庫中的一個表,而模型類的一個實例對應表中的一行記錄。Active Record 和 Row Gateway (行記錄入口)十分相似,但前者是領域模型,後者是一種數據源模式。關係型數據庫往往通過外鍵來表述實體關係,Active Record 在數據源層面上也將這種關係映射爲對象的關聯和聚集。 Active Record 適合非常簡單的領域需求,尤其在領域模型和數據庫模型十分相似的情況下。如果遇到更加複雜的領域模型結構(例如用到繼承、策略的領域模型),往往需要使用分離數據源的領域模型,結合 Data Mapper (數據映射器)使用。
Active Record 驅動框架一般兼有 ORM 框架的功能,但 Active Record 不是簡單的 ORM,正如和 Row Gateway 的區別。由Rails最早提出,遵循標準的ORM模型:表映射到記錄,記錄映射到對象,字段映射到對象屬性。配合遵循的命名和配置慣例,能夠很大程度的快速實現模型的操作,而且簡潔易懂。
●單一入口
單一入口通常是指一個項目或者應用具有一個統一(但並不一定是唯一)的入口文件,也就是說項目的所有功能操作都是通過這個入口文件進行的,並且往往入口文件是第一步被執行的。
單一入口的好處是項目整體比較規範,因爲同一個入口,往往其不同操作之間具有相同的規則。另外一個方面就是單一入口帶來的好處是控制較爲靈活,因爲攔截方便了,類似如一些權限控制、用戶登錄方面的判斷和操作可以統一處理了。
3.許可協議
ThinkPHP遵循Apache2開源協議發佈。Apache Licence是著名的非盈利開源組織Apache採用的協議。該協議和BSD類似,鼓勵代碼共享和尊重原作者的著作權,同樣允許代碼修改,再作爲開源或商業軟件發佈。需要滿足的條件:
1. 需要給代碼的用戶一份Apache Licence ;
2. 如果你修改了代碼,需要在被修改的文件中說明;
3. 在延伸的代碼中(修改和有源代碼衍生的代碼中)需要帶有原來代碼中的協議,商標,專利聲明和其他原來作者規定需要包含的說明;
4. 如果再發布的產品中包含一個Notice文件,則在Notice文件中需要帶有Apache Licence。你可以在Notice中增加自己的許可,但不可以表現爲對Apache Licence構成更改。
4.目錄結構
www WEB部署目錄(或者子目錄)
├─index.php 入口文件
├─README.md README文件
├─Application 應用目錄
├─Public 資源文件目錄
└─ThinkPHP 框架目錄
README.md文件僅用於說明,實際部署的時候可以刪除。
上面的目錄結構和名稱是可以改變的,這取決於你的入口文件和配置參數。
Application目錄默認是空的,但是第一次訪問入口文件會自動生成,參考後面的入口文件部分。
其中框架目錄ThinkPHP的結構如下:
├─ThinkPHP 框架系統目錄(可以部署在非web目錄下面) │ ├─Common 核心公共函數目錄 │ ├─Conf 核心配置目錄 │ ├─Lang 核心語言包目錄 │ ├─Library 框架類庫目錄 │ │ ├─Think 核心Think類庫包目錄 │ │ ├─Behavior 行爲類庫目錄 │ │ ├─Org Org類庫包目錄 │ │ ├─Vendor 第三方類庫目錄 │ │ ├─ ... 更多類庫目錄 │ ├─Mode 框架應用模式目錄 │ ├─Tpl 系統模板目錄 │ ├─LICENSE.txt 框架授權協議文件 │ ├─logo.png 框架LOGO文件 │ ├─README.txt 框架README文件 │ └─index.php 框架入口文件
上述應用的目錄結構只是默認設置,事實上,在實際部署應用的時候,我們建議除了應用入口文件和Public
資源目錄外,其他文件都放到非WEB目錄下面,具有更好的安全性。