ThinkPHP是為了簡化企業(yè)級應(yīng)用開發(fā)和敏捷WEB應(yīng)用開發(fā)而誕生的。最早誕生于2006年初,2007年元旦正式更名為ThinkPHP,并且遵循Apache2開源協(xié)議發(fā)布。ThinkPHP從誕生以來一直秉承簡潔實用的設(shè)計原則,在保持出色的性能和至簡的代碼的同時,也注重易用性。并且擁有眾多原創(chuàng)功能和特性,在社區(qū)團隊的積極參與下,在易用性、擴展性和性能方面不斷優(yōu)化和改進。
ThinkPHP是一個快速、兼容而且簡單的輕量級國產(chǎn)PHP開發(fā)框架,誕生于2006年初,原名FCS,2007年元旦正式更名為ThinkPHP,遵循Apache2開源協(xié)議發(fā)布,從Struts結(jié)構(gòu)移植過來并做了改進和完善,同時也借鑒了國外很多優(yōu)秀的框架和模式,使用面向?qū)ο蟮拈_發(fā)結(jié)構(gòu)和MVC模式,融合了Struts的思想和TagLib(標(biāo)簽庫)、RoR的ORM映射和ActiveRecord模式。
ThinkPHP可以支持windows/Unix/Linux等服務(wù)器環(huán)境,正式版需要PHP5.0以上版本支持,支持MySql、PgSQL、Sqlite多種數(shù)據(jù)庫以及PDO擴展,ThinkPHP框架本身沒有什么特別模塊要求,具體的應(yīng)用系統(tǒng)運行環(huán)境要求視開發(fā)所涉及的模塊。
作為一個整體開發(fā)解決方案,ThinkPHP能夠解決應(yīng)用開發(fā)中的大多數(shù)需要,因為其自身包含了底層架構(gòu)、兼容處理、基類庫、數(shù)據(jù)庫訪問層、模板引擎、緩存機制、插件機制、角色認(rèn)證、表單處理等常用的組件,并且對于跨版本、跨平臺和跨數(shù)據(jù)庫移植都比較方便。并且每個組件都是精心設(shè)計和完善的,應(yīng)用開發(fā)過程僅僅需要關(guān)注您的業(yè)務(wù)邏輯。
重要的概念
要掌握ThinkPHP,首先要了解其中的幾個重要概念,對于熟悉Java開發(fā)的朋友,應(yīng)該很容易理解下面的一些概念。
Action對象
和Struts框架的Action類似,Action對象主要提供應(yīng)用邏輯的控制和處理,屬于ThinkPHP的控制層,由核心的App類完成模塊和操作的解析后直接轉(zhuǎn)交給相應(yīng)的Action對象處理。應(yīng)用類中的所有Action對象都繼承系統(tǒng)的Action基類。
Dao對象
是指DataAccessObject(數(shù)據(jù)訪問對象),Dao設(shè)計模式把底層的數(shù)據(jù)訪問邏輯和業(yè)務(wù)邏輯分開,夾在業(yè)務(wù)層與數(shù)據(jù)層中間,用于數(shù)據(jù)庫訪問和操作??梢葬槍伪砗投啾聿僮?。ThinkPHP中的Dao對象屬于建立在抽象數(shù)據(jù)庫訪問層之上的事務(wù)性對象。
VO對象
是指ValueObject(數(shù)據(jù)對象),更加精確的說是業(yè)務(wù)對象,因為VO對象是存活在業(yè)務(wù)層的,供業(yè)務(wù)邏輯使用的。VO對象和數(shù)據(jù)表存在一種映射關(guān)系,VO對象的每個屬性對應(yīng)數(shù)據(jù)表(或者視圖)的一個字段,你完全可以添加其他非數(shù)據(jù)表字段的VO對象屬性,以用于業(yè)務(wù)邏輯操作,例如關(guān)聯(lián)字段。VO對象有個特殊的保留屬性_info,是一個數(shù)組變量,用來保存該VO對象的一些特殊信息。和VO對象對應(yīng)的概念還有PO(持久數(shù)據(jù)對象),VO和PO的概念都來自于O/RMapping(ObjectRelationalMapping,對象關(guān)系映射),PO只能用在數(shù)據(jù)層(也就是說PO對象的屬性必須和數(shù)據(jù)表一一對應(yīng)),VO用在業(yè)務(wù)邏輯層和表示層(可以有自己的額外屬性)。各層操作屬于該層自己的數(shù)據(jù)對象,這樣就可以降低各層之間的耦合,便于以后系統(tǒng)的維護和擴展。如果將PO用在各個層中就相當(dāng)于我們使用全局變量,我們知道在OO設(shè)計非常不贊成使用全局變量。
VoList對象
在ThinkPHP框架中,把查詢后的數(shù)據(jù)集(ResultSet)轉(zhuǎn)換成數(shù)據(jù)列表對象,也就是VOLIST對象,和ResultSet對象不同的是每個記錄就相當(dāng)于一個VO對象。在VOLIST對象中可以方便地遍歷和操作VO對象。VO對象和VOLIST對象都屬于ThinkPHP框架中的實體對象,是數(shù)據(jù)操作的基本元素。如果你在開發(fā)過程中沒有使用Dao模式,而是通過數(shù)據(jù)庫驅(qū)動類直接操作數(shù)據(jù)庫,那么返回的是ResultSet對象。ThinkPHP系統(tǒng)提供了從ResultSet對象轉(zhuǎn)換為VOLIST對象的方法。
組件和插件支持
基于角色的權(quán)限控制體系
企業(yè)級的應(yīng)用是離不開安全保護的,ThinkPHP以基于Spring的Acegi安全系統(tǒng)作為參考原型,并做了簡化,以適合目前的ThinkPHP結(jié)構(gòu),提供了一個多層的、可定制的安全體系來為應(yīng)用開發(fā)提供安全控制。安全體系中主要有: 安全攔截器、認(rèn)證管理器、決策訪問管理器 、運行身份管理器。
新聞熱點
疑難解答
圖片精選