国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

PHP開發(fā)框架的現(xiàn)狀和展望

瀏覽:4日期:2023-12-20 09:49:25

引言:隨著Ruby on Rails的火爆,PHP這個流行的Web應(yīng)用腳本語言也出現(xiàn)了大量的新一代開發(fā)框架。與此同時,國內(nèi)PHP開發(fā)者也開始緊跟國外發(fā)展,推出了不同的開發(fā)框架。

Ruby on Rails催生變革在RoR流行之前,PHP領(lǐng)域也有不少開發(fā)框架,例如Mojavi、WACT、PHPMvc和Seagull等。這些框架雖然也采用了MVC模式、數(shù)據(jù)庫抽象層等技術(shù)。但由于當(dāng)時PHP本身不像現(xiàn)在這樣流行,所以這些框架都沒有得到大量應(yīng)用,最終歸于沉寂。而在感受到RoR提供的快速開發(fā)能力后,PHP社區(qū)像被注入了興奮劑。各種應(yīng)用技術(shù)和開發(fā)框架層出不窮。

新一代框架的誕生PHP社區(qū)在被RoR震暈后,沒有陷入過多的爭論。而是立即行動起來,開始了新一代框架的設(shè)計(jì)。首先出現(xiàn)的第一批框架幾乎都是RoR的克隆。例 如PHP on Trax(連名字都借鑒Ruby on Rails)和TaniPHP、Akelos等。這些框架最大的特點(diǎn)就是力求100%克隆RoR,不管是采用的架構(gòu)、設(shè)計(jì)模式,還是使用方法。這幾個框架一開始確實(shí)吸引了開發(fā)者的注意,但隨著開發(fā)者的深入了解,這些框架頭上的光環(huán)逐步褪色。晦澀難懂的架構(gòu)、糟糕的性能,以及太多的限制,讓這些框架難以在實(shí)際項(xiàng)目中運(yùn)用。此時,許多PHP開發(fā)者認(rèn)為可以借鑒RoR的設(shè)計(jì)思想,但不應(yīng)照搬RoR的結(jié)構(gòu)和實(shí)現(xiàn)。為此,一些同樣推崇快速開發(fā)的框架開始在PHP社區(qū)出現(xiàn)。這些框架中,CakePHP和Symfony可謂佼佼者。

CakePHP(http://www.cakephp.org/)CakePHP充滿了RoR的影子,從ActiveRecord模式到視圖的布局管理都和RoR非常相似。而且CakePHP一開始也嘗試實(shí)現(xiàn)與 RoR一樣的許多東西。但CakePHP的開發(fā)團(tuán)隊(duì)后來發(fā)現(xiàn)PHP語言和Ruby語言存在巨大區(qū)別,因此RoR中的許多設(shè)計(jì)即便能夠在PHP中實(shí)現(xiàn),也是 缺乏實(shí)用價值的。CakePHP在發(fā)展中逐步走出了RoR的陰影,開始探索更能發(fā)揮PHP語言本身優(yōu)勢的架構(gòu)和實(shí)現(xiàn)。因此有一段時間CakePHP的API發(fā)生了劇烈的變化,以致其他開發(fā)者紛紛停下腳步處于觀望狀態(tài)。但由于前期一些架構(gòu)的不合理和對RoR太多的模仿,導(dǎo)致CakePHP的核心部分越來越難以理解,運(yùn)行性能也不盡人意。而且CakePHP將一個龐大的數(shù)據(jù)庫操作對象作為所有業(yè)務(wù)對象的基礎(chǔ)。這雖然利于快速開發(fā),但卻導(dǎo)致對業(yè)務(wù)邏輯對象的測試非常困難。對于較小型的項(xiàng)目,CakePHP非常理想。出色的快速開發(fā)能力、豐富的API和詳盡的文檔都可以幫助開發(fā)者很快完成工作。但隨著項(xiàng)目規(guī)模的增加,CakePHP的局限性也變得突出。

Symfony(http://www.symfony-project.com/)Symfony是一個非常成熟的框架,大量利用了已有的開源項(xiàng)目。Symfony使用Mojavi的核心代碼實(shí)現(xiàn)了框架的MVC模式,利用 Propel作為數(shù)據(jù)庫抽象層。Symfony不僅功能強(qiáng)大,而且對Ajax有全面的支持。加上官方網(wǎng)站提供的大量文檔和教程,并擁有一個活躍的社區(qū),因 此受到許多開發(fā)者的歡迎。但是,Symfony最大的問題也在于使用了太多風(fēng)格迥異的開源項(xiàng)目來組合成框架。由于Mojavi和Propel本身都相當(dāng)復(fù)雜,因此Symfony的結(jié)構(gòu)非常復(fù)雜,難以理解和學(xué)習(xí)。不過對于希望選擇一個框架作為企業(yè)內(nèi)部系統(tǒng)基礎(chǔ)架構(gòu)的企業(yè)來說,Symfony的成熟度、豐富的文檔和活躍的社區(qū)都是值得考慮的。畢竟企業(yè)內(nèi)部系統(tǒng)更為看重的是穩(wěn)定性和長期的支持。

商業(yè)利益與大道至簡看到PHP開發(fā)框架的潛在商業(yè)價值后,Zend.com聯(lián)合IBM宣布將要推出一個真正能夠發(fā)揮PHP優(yōu)勢的開發(fā)框架。一時間,這個消息在整個PHP社區(qū)引起了地震。大家都開始期盼這個具有“官方”背景的開發(fā)框架能夠?yàn)镻HP開發(fā)者指出一條正確的道路。不過世事難測,就在Zend Framework團(tuán)隊(duì)公布幾個代碼片斷后,立即就有開發(fā)者指出這些代碼片段是不可能實(shí)現(xiàn)的。事實(shí)證明這些代碼片段不過是美好的理想。限于PHP語言本身 的能力,Zend Framework最終沒有實(shí)現(xiàn)當(dāng)初承諾提供的類似RoR中ActiveRecord模式的實(shí)現(xiàn)品。

Zend Framework(http://framework.zend.com/) Zend Framework大量應(yīng)用了PHP5中面向?qū)ο蟮男绿卣鳎航涌凇惓!⒊橄箢悺PL等等。這些東西的應(yīng)用讓Zend Framework具有高度的模塊化和靈活性。同時,因?yàn)閲?yán)格遵循“針對接口編程”和“單一對象職責(zé)”等原則,讓Zend Framework很有希望成為一個出色的企業(yè)應(yīng)用開發(fā)框架。但不幸的是Zend Framework直到今天,也沒有做出更多的突破。在使用Zend Framework開發(fā)時,框架對應(yīng)用程序自身最重要的領(lǐng)域邏輯分離沒有提供任何幫助。如果希望開發(fā)出真正健壯的企業(yè)應(yīng)用,仍然需要開發(fā)者做出相當(dāng)?shù)呐?力,并且在Zend Framework之上建造自己的基礎(chǔ)設(shè)施。針對這點(diǎn),批評者指出Zend Framework雖然大量應(yīng)用PHP5的新特征,但卻沒有將這些相對于PHP4的優(yōu)勢轉(zhuǎn)化為能夠?yàn)殚_發(fā)者提供幫助的東西。

對于簡單和小型的項(xiàng)目來說,Zend Framework不但不能提高開發(fā)效率。反而因?yàn)樵诳蚣苤袘?yīng)用了大量面向?qū)ο笤O(shè)計(jì)和PHP5的新特征,對開發(fā)者提出了更高的要求,間接增加了項(xiàng)目的開發(fā) 成本。而對于較大的項(xiàng)目和企業(yè)應(yīng)用,Zend Framework倒是一個不錯的基礎(chǔ)。但要創(chuàng)建一個成功的應(yīng)用,仍然需要付出不小的努力。并且要時刻注意Zend Framewok的性能問題。

Code Igniter(http://www.codeigniter.com/)Code Igniter可以說是一匹黑馬。Code Igniter出現(xiàn)之時正是Symfony和CakePHP大行其道、Zend Framework萬眾期待的時刻。可憑借著獨(dú)特的設(shè)計(jì)思想,Code Igniter吸引了大批開發(fā)者。這點(diǎn)從其火爆的官方論壇就可得到證實(shí)。Code Igniter推崇“簡單就是美”這一原則。沒有花哨的設(shè)計(jì)模式、沒有華麗的對象結(jié)構(gòu),一切都是那么簡單。幾行代碼就能開始運(yùn)行,再加幾行代碼就可以進(jìn)行 輸出。大部分日常開發(fā)中用到的東西都可以立即找到,并且可以很容易的使用。Code Igniter可謂是“大道至簡”的典范。但是,Code Igniter本身的實(shí)現(xiàn)不太理想。內(nèi)部結(jié)構(gòu)過于混亂,雖然簡單易用,但缺乏擴(kuò)展能力。因此在發(fā)展到1.5系列版本時,作者不得不通過增加各種hooks來為框架提供擴(kuò)展能力。

國內(nèi)PHP開發(fā)框架國內(nèi)雖然過去也曾有開發(fā)者發(fā)布過一些框架,但這些框架要么太過簡單,要么和某一類型的應(yīng)用緊密耦合,缺乏通用性。直到進(jìn)入2006年,隨著PHP在國內(nèi)的大量應(yīng)用和追捧,真正的國產(chǎn)PHP開發(fā)框架才陸續(xù)發(fā)布。

FCS(http://fcs.org.cn/) FCS是從Java的Struts結(jié)構(gòu)移植過來的中文PHP開發(fā)框架,使用面向?qū)ο蟮拈_發(fā)結(jié)構(gòu)和MVC模式,并且模擬實(shí)現(xiàn)了Struts的標(biāo)簽庫,借 鑒了國外一些不錯的思想,尤其是Java框架方面,因此熟悉Java的開發(fā)人員相對比較容易上手,其模版引擎、緩存機(jī)制、認(rèn)證機(jī)制和擴(kuò)展性方面均表現(xiàn)不 凡。在借鑒國外優(yōu)秀思想的同時,F(xiàn)CS也更多地考慮了國內(nèi)的應(yīng)用開發(fā)需要。PHP4兼容、完全支持UTF-8,以及PATHINFO支持等,更加有利于國 內(nèi)的主機(jī)環(huán)境和開發(fā)需要。秉著易用和易擴(kuò)展的原則,F(xiàn)CS采用容易理解的項(xiàng)目、模塊和操作機(jī)制加上內(nèi)置的一些自動化操作方法,讓應(yīng)用開發(fā)變得更加簡單,其 功能可以通過基類庫以及各種插件的形式靈活擴(kuò)展,從而滿足日益增長的業(yè)務(wù)需求。正是因?yàn)榫邆淞己玫拈_發(fā)結(jié)構(gòu),使得FCS在開發(fā)大型應(yīng)用的時候并不會顯得有 很多障礙,基于構(gòu)件的方式,以及配合框架的項(xiàng)目管理機(jī)制同樣可以讓你在處理大型應(yīng)用的時候一展所長。FCS力求精簡的代碼和全中文化的文檔、注釋,有利于國內(nèi)PHP開發(fā)人員學(xué)習(xí)和掌握,不過根據(jù)目前的情況來看,官方的文檔和社區(qū)支持目前還比較缺乏,而且對Ajax的支持還不夠全面,因此國內(nèi)的應(yīng)用成熟度還不夠。

FleaPHP(http://www.fleaphp.org/) FleaPHP從發(fā)展上看,是一個具有一定歷史的框架。在過去三年中,F(xiàn)leaPHP是作者發(fā)布了從PFC1到PFC3系列和flea1試驗(yàn)框架后,推出的第一個真正成熟、穩(wěn)定的開發(fā)框架。與許多其他框架不同,F(xiàn)leaPHP設(shè)計(jì)之初,就是圍繞快速開發(fā)和充分利用PHP自身優(yōu)勢兩個重點(diǎn)展開的。因此FleaPHP最大的特點(diǎn)就是極高的模塊化程度和擴(kuò)展能力。FleaPHP框架的核心非常小,但通過靈活的配置,可以組合出各種類型的基礎(chǔ)架構(gòu)。對于簡單的腳本頁面,F(xiàn)leaPHP不需要載入MVC模式,只需 要為應(yīng)用程序提供業(yè)務(wù)邏輯和數(shù)據(jù)庫服務(wù)。而對于復(fù)雜的應(yīng)用程序,F(xiàn)leaPHP可以完成從MVC模式調(diào)用、訪問控制、數(shù)據(jù)驗(yàn)證到文件上傳、圖片處理等各種 各樣的任務(wù)。正是因?yàn)檫@種出色的定制和擴(kuò)展能力,F(xiàn)leaPHP真正接近了“滿足從簡單應(yīng)用到企業(yè)開發(fā)的各種需求”這個目標(biāo)。而且與許多其他框架不同, FleaPHP是一個完全在實(shí)際開發(fā)中精煉出來的框架。因此伴隨著FleaPHP的發(fā)展,各種各樣的實(shí)際應(yīng)用也相繼出現(xiàn)。在FleaPHP官方網(wǎng)站上,可 以看到各種各樣的實(shí)際應(yīng)用。從最簡單的企業(yè)宣傳網(wǎng)站,到復(fù)雜的社區(qū)網(wǎng)站、企業(yè)內(nèi)部系統(tǒng)等等,不一而足。

FleaPHP作為一個完全國產(chǎn)的框架,具有完全中文化的文檔、代碼注釋,并且在擴(kuò)展功能上也注重考慮國內(nèi)開發(fā)者的實(shí)際需求。因此相對于國外的各種框架,F(xiàn)leaPHP更容易被國內(nèi)開發(fā)者所接受。但是,也正因?yàn)樘幵趪鴥?nèi),F(xiàn)leaPHP面臨比國外同行多得多的困難。缺乏足夠的貢獻(xiàn)者、無禮的責(zé)難,以及充滿懷疑的眼光,這些都讓FleaPHP的 開發(fā)團(tuán)隊(duì)成員需要更多的奉獻(xiàn)精神。而且由于缺乏足夠的貢獻(xiàn)者,F(xiàn)leaPHP框架目前在文檔和擴(kuò)展功能方面,與其他成熟框架相比還有不小的差距。并且與其他所有的PHP開發(fā)框架一樣,F(xiàn)leaPHP也沒有找到幫助開發(fā)者分離應(yīng)用程序領(lǐng)域邏輯的途徑。雖然有指導(dǎo)文檔,但對于初級開發(fā)者來說,一個可以拿來就用的領(lǐng)域邏輯基礎(chǔ)會顯得很實(shí)用。

反思與進(jìn)取RoR帶來的沖擊波還遠(yuǎn)為平息,但PHP開發(fā)者們已經(jīng)在開始反思一味追隨RoR的腳步是否真的能夠?yàn)镻HP開發(fā)帶來質(zhì)變?RoR之所以能夠取得如此巨大的成功,除了RoR本身的設(shè)計(jì)思想外,還有一個重要原因就是RoR充分利用了Ruby這種語言的特長。將Ruby動態(tài)語 言的優(yōu)勢發(fā)揮得淋漓盡致。而在PHP中如果只是單純照搬RoR中設(shè)計(jì),則要處處遇到PHP語言本身的限制。為了繞開這些限制,開發(fā)者不得不用一些難以理解 的技巧來解決問題。但這樣一來通常會導(dǎo)致框架的結(jié)構(gòu)變得晦澀難懂、性能受到損害。在這種反思中,Code Igniter、FleaPHP等框架就是對這個問題的最好回答。只有充分利用PHP語言本身的優(yōu)勢,才能真正讓PHP開發(fā)變得更簡單、更有趣。

發(fā)展到今天,各種PHP開發(fā)框架雖然具有各自的特色,但幾乎都是為了提高開發(fā)效率而努力。但是,雖然其中部分框架注意到了提高應(yīng)用程序可維護(hù)性的問題,但都沒有為領(lǐng)域邏輯分離這個至關(guān)重要的問題提出解決方案。而這正是這些框架在未來的發(fā)展目標(biāo)。對于簡單的Web應(yīng)用和復(fù)雜的企業(yè)應(yīng)用,兩者之間的差別就注定了采用一種固定的架構(gòu)是無法滿足需求的。因此像FleaPHP這樣能夠提供自定義架構(gòu)能力的框架,可以讓開發(fā)者嘗試用一個框架的不同組合來解決從簡單到復(fù)雜的不同程度的需求。

未來,PHP將成為Web開發(fā)領(lǐng)域中越來越重要的平臺。因此我們相信會出現(xiàn)更多更好的開發(fā)框架。雖然作為開發(fā)者來說,并不一定需要采用某一個框架來解決問題。但正是因?yàn)檫@些不斷出現(xiàn)的框架,我們對使用PHP開發(fā)Web應(yīng)用的理解和把握得到了一次次的推動。

出處:http://blog.csdn.net/fleaphp/archive/2006/12/25/1460556.aspx

標(biāo)簽: PHP
主站蜘蛛池模板: 中国国语毛片免费观看视频 | 成人高清毛片a | 免费观看的毛片手机视频 | 欧美日韩亚洲在线观看 | 黑人巨大交牲老太 | 手机在线看a | 最新步兵社区在线观看 | 国产免费高清在线精品一区 | 欧美一级毛片欧美一级 | 天天狠操 | 美女黄页网站免费进入 | 国产成人精品女人不卡在线 | 日韩在线三级 | 国产精品久久国产三级国电话系列 | 免费看黄网址 | 亚洲日本高清影院毛片 | 91亚洲精品一区二区在线观看 | 未成人做爰视频www 窝窝午夜精品一区二区 | 午夜一级片 | 亚洲综合久久久久久中文字幕 | 日韩欧美精品综合一区二区三区 | 免费乱人伦 | 欧美人交性视频在线香蕉 | 国产日韩精品一区二区 | 狠狠色丁香久久婷婷综 | 在线 中文字幕 日韩 欧美 | 日本韩国一区 | 亚洲精彩视频在线观看 | 欧美xo影院 | 黄色国产免费观看 | 欧美综合在线观看 | 美女脱了内裤张开腿让男人桶网站 | 精品国产三级a在线观看 | 成年人免费软件 | 日本成人在线视频网站 | 久久久久久亚洲精品中文字幕 | 亚洲精品亚洲人成在线 | 亚洲人在线 | 中文字幕综合在线 | 久久综合婷婷香五月 | 国内精品久久久久久久aa护士 |