一、什么是ZenTaoPHP框架
ZenTaoPHP框架是由禪道項(xiàng)目管理軟件開發(fā)團(tuán)隊(duì)開發(fā)的一款輕量級(jí)的PHP開發(fā)框架,它主要的特點(diǎn)是:
1.1 代碼簡單
ZenTaoPHP框架核心只有四個(gè)文件,分別為調(diào)度類router.class.php,control類control.class.php,model類model.class.php和工具類helper.class.php。里面的代碼也足夠簡單。這樣大家可以很容易的讀懂它的代碼,并根據(jù)自己的實(shí)際應(yīng)用進(jìn)行定制修改。
1.2 性能良好
ZenTaoPHP框架在實(shí)現(xiàn)過程中,十分重視性能。在保證功能的前提下面,盡可能的提升程序執(zhí)行效率。
1.3 結(jié)構(gòu)清晰
使用ZenTaoPHP框架來開發(fā)應(yīng)用,其目錄結(jié)構(gòu)簡單清晰,維護(hù)起來非常的方便。
1.4 開發(fā)友好
框架,首先是一個(gè)框,把你框在了里面。所以很多框架會(huì)有很多的約定,你要怎樣,你要怎樣。還有很多隱形的約定,比如你要在你的代碼里面寫很多的xxxx之類的東東。我覺得一個(gè)好的框架在實(shí)現(xiàn)功能的前提下,應(yīng)當(dāng)盡量兼顧開發(fā)人員之前的開發(fā)習(xí)慣。ZenTaoPHP框架在這方面花了很大的力氣:
中性命名:框架實(shí)現(xiàn)時(shí),沒有出現(xiàn)什么zentao之類的命名,完全是中性的命名:router, control, model, config, lang。
配置對(duì)象化: 配置項(xiàng)可以通過對(duì)象的方式來引用,$config->db->user,要比$config['db']['user']簡潔順暢的多。
相對(duì)路徑包含:在ZenTaoPHP框架開發(fā)的應(yīng)用中,所有的路徑都可以用相對(duì)路徑來進(jìn)行包含,這樣可以很清晰的知道目錄結(jié)構(gòu)和代碼之間的關(guān)系。
1.5 public domain 授權(quán)
public domain 授權(quán)是你可以拿它做任何的事情,禪道開發(fā)團(tuán)隊(duì)已經(jīng)將ZenTaoPHP框架的版權(quán)完全的捐獻(xiàn)給了公眾領(lǐng)域。任何人,任何單位可以拿它做任何的事情,而沒有任何的限制。
二、ZenTaoPHP框架的主要功能如下:
2.1 單一入口模式
單一入口是現(xiàn)在比較流行的開發(fā)方式。好處在于可以有一個(gè)集中的控制;蛘咧v框架一個(gè)比較基本的東西也是單一入口吧。現(xiàn)在ZenTaoPHP框架支持web方式和命令行方式的兩種入口文件。具體的例子大家可以查看app目錄下面的demo/www/index.php和cli/call這兩個(gè)文件。
2.2 MVC
ZenTaoPHP支持MVC方式的開發(fā)。不過相比較于其他框架的多種模板實(shí)現(xiàn)來講,ZenTaoPHP并沒有嘗試去開發(fā)一套新的模板系統(tǒng),而是采用PHP作為模板語言。這是快的一種解決方案,而且也是簡潔的一種方案。
2.3 支持GET和PATH_INFO兩種方式調(diào)用
支持 index.php?m=user&f=info&id=123這種GET方式的調(diào)用,也支持 /user/info/id/123.html 這種方式的調(diào)用。如果你能控制你的運(yùn)行環(huán)境,可以使用PATH_INFO的方式,這樣生成的URL地址更加簡捷,而且對(duì)搜索引擎十分友好。
2.4 內(nèi)置數(shù)據(jù)庫訪問層DAO
禪道框架內(nèi)置了DAO數(shù)據(jù)庫訪問層,在PDO的基礎(chǔ)上,提供了完整的SQL拼裝功能,可以非常方便的書寫SQL查詢語句,獲取數(shù)據(jù)。而且我們?cè)趯?shí)現(xiàn)DAO的時(shí)候,花了很大的力氣在兼容之前大家手寫SQL的習(xí)慣,所以大家在使用禪道框架的DAO的時(shí)候,會(huì)發(fā)現(xiàn)很親切,因?yàn)楹褪謱慡QL基本上是相同的。
2.5 支持跨模塊之間的調(diào)用
在ZenTaoPHP框架中,一個(gè)模塊的control或者model都可以直接調(diào)用另外一個(gè)模塊的model,這樣可以將一個(gè)應(yīng)用進(jìn)行模塊化,然后通過采用不同模塊的功能,來實(shí)現(xiàn)比較復(fù)雜的功能。
除了model的調(diào)用之外,一個(gè)模塊的control還可以fetch另外一個(gè)模塊的control方法,這種一般用于一些共用的頁面元素,比如打印一個(gè)搜索表單,或者打印菜單等等。通過control之間的互相調(diào)用,實(shí)現(xiàn)代碼的共享。
2.6 無需路由配置,即可獲得簡捷的URL
ZenTaoPHP框架提供了簡潔的參數(shù)傳遞方式。比如user模塊有一個(gè)read方法,需要id和name兩個(gè)參數(shù),通常的PATH_INO為user/read/id/1/name/wwccss.html,而ZenTaoPHP支持user/read/1/wwccss.html的形式,這樣省略了參數(shù)名的傳遞。這一切,都不需要配置任何的路由,直接通過框架的功能可以獲得。
2.7 靈活的數(shù)據(jù)驗(yàn)證機(jī)制
禪道PHP框架內(nèi)置了靈活的數(shù)據(jù)驗(yàn)證機(jī)制,可以實(shí)現(xiàn)對(duì)數(shù)據(jù)的修正和檢查,代碼極其緊湊,簡潔。
2.8 配置和語言可以通過對(duì)象方式引用
ZenTaoPHP框架的配置沒有用什么ini文件,也沒有用什么yaml文件,也沒有用php的數(shù)組,而是直接用PHP對(duì)象的形式。這樣配置文件不需要解析,可以直接使用,而且引用起來十分的方便。形如$config->db->host的這種方式,而不是$config['db']['host']的這種方式。書寫起來會(huì)非常的流暢!
2.9 方便的全局變量應(yīng)用
在ZenTaoPHP框架中,引用GET,POST, SERVER這樣的全局變量,可以通過這樣的方式:$this->get->userName, $this->post->userName, $this->server->remote_addr。
2.10 所見即API
在現(xiàn)在開放平臺(tái)的潮流下面,有一個(gè)非常好的api機(jī)制是比較重要的。在ZT中,每一個(gè)接口都可以成為api。至于api的方式,是通過其訪問的擴(kuò)展名來加以區(qū)分。比如如果你訪問的是user/read/id/123.html,那么返回的是正常的網(wǎng)頁。如果訪問的是user/read/id/123.json,那么返回的是json格式的數(shù)據(jù)。
2.11 內(nèi)置多語言支持
ZT支持多種語言功能,會(huì)自動(dòng)根據(jù)當(dāng)前用戶客戶端的信息來判斷使用何種語言,這樣可以方便大家開發(fā)多語言的應(yīng)用。
2.12 強(qiáng)大的擴(kuò)展機(jī)制
ZenTaoPHP框架實(shí)現(xiàn)了強(qiáng)大的擴(kuò)展機(jī)制。通過這套擴(kuò)展機(jī)制,做定制開發(fā)可以說是輕而易舉,再也不用擔(dān)心維護(hù)多個(gè)分支帶來的痛苦了。