php的ror類似框架, 有精美的影片展示
()
watch/
看其20分鐘用此框架製作blog質量清晰,片頭內容渲染得十分華麗,操作從容不迫,
比ROR官方的快放的錄入要穩當的多
比較鐵道播客的15分鐘RadRails作blog, 就感覺時間緊了些,手工的錄入還是多了點
半路也有磕磕絆絆的時候
http://rorcast.blogger2blogger.com/public/articles/2006/03/24/15%E5%88%86%E9%92%9F%E7%94%A8radrails%E4%BD%9C%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84blog
20分鐘的影片只有2-3處有些語法的疑惑,其它一目瞭然
值得推薦觀賞
****************************
隨著Ruby on Rails的火爆,P這個流行的Web應用指令碼語言也出現了大量的新一代開發框架。與此同時,國內PHP開發者也開始緊跟國外發展,推出了不同的開發框架。
|
Ruby on Rails催生變革
在RoR流行之前,PHP領域也有不少開發框架,例如Mojavi、WACT、PHPMvc和Seagull等。這些框架雖然也採用了MVC模式、抽象層等技術。但由於當時PHP本身不像現在這樣流行,所以這些框架都沒有得到大量應用,最終歸於沉寂。
而在感受到RoR提供的快速開發能力後,PHP社群像被注入了興奮劑。各種應用技術和開發框架層出不窮。
新一代框架的誕生
PHP社群在被RoR震暈後,沒有陷入過多的爭論。而是立即行動起來,開始了新一代框架的設計。首先出現的第一批框架幾乎都是RoR的克隆。例 如PHP on Trax(連名字都借鑑Ruby on Rails)和TaniPHP、Akelos等。這些框架最大的特點就是力求100%克隆RoR,不管是採用的架構、設計模式,還是使用方法。
這幾個框架一開始確實吸引了開發者的注意,但隨著開發者的深入瞭解,這些框架頭上的光環逐步褪色。晦澀難懂的架構、糟糕的效能,以及太多的限制,讓這些框架難以在實際專案中運用。
此時,許多PHP開發者認為可以借鑑RoR的設計思想,但不應照搬RoR的結構和實現。為此,一些同樣推崇快速開發的框架開始在PHP社群出現。這些框架中,kePHP和Symfony可謂佼佼者。
CakePHP()
CakePHP充滿了RoR的影子,從ActiveRecord模式到檢視的佈局管理都和RoR非常相似。而且CakePHP一開始也嘗試實現與 RoR一樣的許多東西。但CakePHP的開發團隊後來發現PHP語言和Ruby語言存在巨大區別,因此RoR中的許多設計即便能夠在PHP中實現,也是 缺乏實用價值的。
CakePHP在發展中逐步走出了RoR的陰影,開始探索更能發揮PHP語言本身優勢的架構和實現。因此有一段時間CakePHP的I發生了劇烈的變化,以致其他開發者紛紛停下腳步處於觀望狀態。
但由於前期一些架構的不合理和對RoR太多的模仿,導致CakePHP的核心部分越來越難以理解,執行效能也不盡人意。而且CakePHP將一個龐大的資料庫操作物件作為所有業務物件的基礎。這雖然利於快速開發,但卻導致對業務邏輯物件的測試非常困難。
對於較小型的專案,CakePHP非常理想。出色的快速開發能力、豐富的API和詳盡的文件都可以幫助開發者很快完成工作。但隨著專案規模的增加,CakePHP的侷限性也變得突出。
Symfony()
Symfony是一個非常成熟的框架,大量利用了已有的開源專案。Symfony使用Mojavi的核心程式碼實現了框架的MVC模式,利用 Propel作為資料庫抽象層。Symfony不僅功能強大,而且對Ajax有全面的支援。加上官方網站提供的大量文件和教程,並擁有一個活躍的社群,因 此受到許多開發者的歡迎。
但是,Symfony最大的問題也在於使用了太多風格迥異的開源專案來組合成框架。由於Mojavi和Propel本身都相當複雜,因此Symfony的結構非常複雜,難以理解和學習。
不過對於希望選擇一個框架作為企業內部系統基礎架構的企業來說,Symfony的成熟度、豐富的文件和活躍的社群都是值得考慮的。畢竟企業內部系統更為看重的是穩定性和長期的支援。
商業利益與大道至簡
看到PHP開發框架的潛在商業價值後,Zend.com聯合宣佈將要推出一個真正能夠發揮PHP優勢的開發框架。一時間,這個訊息在整個PHP社群引起了地震。大家都開始期盼這個具有“官方”背景的開發框架能夠為PHP開發者指出一條正確的道路。
不過世事難測,就在Zend Framework團隊公佈幾個程式碼片斷後,立即就有開發者指出這些程式碼片段是不可能實現的。事實證明這些程式碼片段不過是美好的理想。限於PHP語言本身 的能力,Zend Framework最終沒有實現當初承諾提供的類似RoR中ActiveRecord模式的實現品。
Zend Framework()
Zend Framework大量應用了PHP5中物件導向的新特徵:介面、異常、抽象類、SPL等等。這些東西的應用讓Zend Framework具有高度的模組化和靈活性。同時,因為嚴格遵循“針對介面程式設計”和“單一物件職責”等原則,讓Zend Framework很有希望成為一個出色的企業應用開發框架。
但不幸的是Zend Framework直到今天,也沒有做出更多的突破。在使用Zend Framework開發時,框架對應用程式自身最重要的領域邏輯分離沒有提供任何幫助。如果希望開發出真正健壯的企業應用,仍然需要開發者做出相當的努 力,並且在Zend Framework之上建造自己的基礎設施。
針對這點,批評者指出Zend Framework雖然大量應用PHP5的新特徵,但卻沒有將這些相對於PHP4的優勢轉化為能夠為開發者提供幫助的東西。
對於簡單和小型的專案來說,Zend Framework不但不能提高開發效率。反而因為在框架中應用了大量物件導向設計和PHP5的新特徵,對開發者提出了更高的要求,間接增加了專案的開發 成本。而對於較大的專案和企業應用,Zend Framework倒是一個不錯的基礎。但要建立一個成功的應用,仍然需要付出不小的努力。並且要時刻注意Zend Framewok的效能問題。
Code Igniter()
Code Igniter可以說是一匹黑馬。Code Igniter出現之時正是Symfony和CakePHP大行其道、Zend Framework萬眾期待的時刻。可憑藉著獨特的設計思想,Code Igniter吸引了大批開發者。這點從其火爆的官方論壇就可得到證實。
Code Igniter推崇“簡單就是美”這一原則。沒有花哨的設計模式、沒有華麗的物件結構,一切都是那麼簡單。幾行程式碼就能開始執行,再加幾行程式碼就可以進行 輸出。大部分日常開發中用到的東西都可以立即找到,並且可以很容易的使用。Code Igniter可謂是“大道至簡”的典範。
但是,Code Igniter本身的實現不太理想。內部結構過於混亂,雖然簡單易用,但缺乏擴充套件能力。因此在發展到1.5系列版本時,作者不得不透過增加各種hooks來為框架提供擴充套件能力。
國內PHP開發框架
國內雖然過去也曾有開發者釋出過一些框架,但這些框架要麼太過簡單,要麼和某一型別的應用緊密耦合,缺乏通用性。直到進入2006年,隨著PHP在國內的大量應用和追捧,真正的國產PHP開發框架才陸續釋出。
FCS()
FCS是從Java的Struts結構移植過來的中文PHP開發框架,使用物件導向的開發結構和MVC模式,並且模擬實現了Struts的標籤庫,借 鑑了國外一些不錯的思想,尤其是Java框架方面,因此熟悉Java的開發人員相對比較容易上手,其模版引擎、快取機制、認證機制和擴充套件性方面均表現不 凡。
在借鑑國外優秀思想的同時,FCS也更多地考慮了國內的應用開發需要。PHP4相容、完全支援 UTF-8,以及PATHINFO支援等,更加有利於國 內的主機環境和開發需要。秉著易用和易擴充套件的原則,FCS採用容易理解的專案、模組和操作機制加上內建的一些自動化操作方法,讓應用開發變得更加簡單,其 功能可以透過基類庫以及各種外掛的形式靈活擴充套件,從而滿足日益增長的業務需求。正是因為具備良好的開發結構,使得FCS在開發大型應用的時候並不會顯得有 很多障礙,基於構件的方式,以及配合框架的專案管理機制同樣可以讓你在處理大型應用的時候一展所長。
FCS力求精簡的程式碼和全中文化的文件、註釋,有利於國內PHP開發人員學習和掌握,不過根據目前的情況來看,官方的文件和社群支援目前還比較缺乏,而且對Ajax的支援還不夠全面,因此國內的應用成熟度還不夠。
FleaPHP()
FleaPHP從發展上看,是一個具有一定歷史的框架。在過去三年中,FleaPHP是作者釋出了從PFC1到PFC3系列和flea1試驗框架後,推出的第一個真正成熟、穩定的開發框架。
與許多其他框架不同,FleaPHP設計之初,就是圍繞快速開發和充分利用PHP自身優勢兩個重點展開的。因此FleaPHP最大的特點就是極高的模組化程度和擴充套件能力。
FleaPHP框架的核心非常小,但透過靈活的配置,可以組合出各種型別的基礎架構。對於簡單的指令碼頁面,FleaPHP不需要載入MVC模式,只需 要為應用程式提供業務邏輯和資料庫服務。而對於複雜的應用程式,FleaPHP可以完成從MVC模式呼叫、訪問控制、資料驗證到檔案上傳、圖片處理等各種 各樣的任務。
正是因為這種出色的定製和擴充套件能力,FleaPHP真正接近了“滿足從簡單應用到企業開 發的各種需求”這個目標。而且與許多其他框架不同, FleaPHP是一個完全在實際開發中精煉出來的框架。因此伴隨著FleaPHP的發展,各種各樣的實際應用也相繼出現。在FleaPHP官方網站上,可 以看到各種各樣的實際應用。從最簡單的企業宣傳網站,到複雜的社群網站、企業內部系統等等,不一而足。
FleaPHP作為一個完全國產的框架,具有完全中文化的文件、程式碼註釋,並且在擴充套件功能上也注重考慮國內開發者的實際需求。因此相對於國外的各種框架,FleaPHP更容易被國內開發者所接受。
但是,也正因為處在國內,FleaPHP面臨比國外同行多得多的困難。缺乏足夠的貢獻者、無禮的責難,以及充滿懷疑的眼光,這些都讓FleaPHP的 開發團隊成員需要更多的奉獻精神。而且由於缺乏足夠的貢獻者,FleaPHP框架目前在文件和擴充套件功能方面,與其他成熟框架相比還有不小的差距。
並且與其他所有的PHP開發框架一樣,FleaPHP也沒有找到幫助開發者分離應用程式領域邏輯的途徑。雖然有指導文件,但對於初級開發者來說,一個可以拿來就用的領域邏輯基礎會顯得很實用。
反思與進取
RoR帶來的衝擊波還遠為平息,但PHP開發者們已經在開始反思一味追隨RoR的腳步是否真的能夠為PHP開發帶來質變?
RoR之所以能夠取得如此巨大的成功,除了RoR本身的設計思想外,還有一個重要原因就是RoR充分利用了Ruby這種語言的特長。將Ruby動態語 言的優勢發揮得淋漓盡致。而在PHP中如果只是單純照搬RoR中設計,則要處處遇到PHP語言本身的限制。為了繞開這些限制,開發者不得不用一些難以理解 的技巧來解決問題。但這樣一來通常會導致框架的結構變得晦澀難懂、效能受到損害。
在這種反思中,Code Igniter、FleaPHP等框架就是對這個問題的最好回答。只有充分利用PHP語言本身的優勢,才能真正讓PHP開發變得更簡單、更有趣。
發展到今天,各種PHP開發框架雖然具有各自的特色,但幾乎都是為了提高開發效率而努力。但是,雖然其中部分框架注意到了提高應用程式可維護性的問題,但都沒有為領域邏輯分離這個至關重要的問題提出解決方案。而這正是這些框架在未來的發展目標。
對於簡單的Web應用和複雜的企業應用,兩者之間的差別就註定了採用一種固定的架構是無法滿足需求的。因此像FleaPHP這樣能夠提供自定義架構能力的框架,可以讓開發者嘗試用一個框架的不同組合來解決從簡單到複雜的不同程度的需求。
未來,PHP將成為Web開發領域中越來越重要的平臺。因此我們相信會出現更多更好的開發框架。雖然作為開發者來說,並不一定需要採用某一個框架來解決問題。但正是因為這些不斷出現的框架,我們對使用PHP開發Web應用的理解和把握得到了一次次的推動[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/93029/viewspace-1017254/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- yearrecord——一個類似痕跡牆的React資料展示元件React元件
- Excel有類似“分列”的“分行”功能嗎?Excel
- 極其精簡的PHP框架WJWPHP框架
- 有沒有類似上線釋出管理的工具
- react 有沒有類似vue中watch這樣的api?ReactVueAPI
- 【like-react】手寫一個類似 react 的框架React框架
- 凹音短影片軟體開發(類似現成)
- Java界有沒有類似DotNetNuke的開源專案?Java
- 採用 SwiftNIO 實現一個類似 Express 的 Web 框架SwiftExpressWeb框架
- RemoteBrowser:類似Puppeteer的瀏覽器自動化框架REM瀏覽器框架
- 【JavaScript框架封裝】實現一個類似於JQuery的動畫框架的封裝JavaScript框架封裝jQuery動畫
- PHP - 實現類似於百度的實時搜尋PHP
- [轉載] .NET 中可以有類似 JVM 的幻像引用嗎?JVM
- 01 . Go之從零實現Web框架(類似Gin)GoWeb框架
- 【JavaScript框架封裝】實現一個類似於JQuery的CSS樣式框架的封裝JavaScript框架封裝jQueryCSS
- JSP中有沒有類似htmledit這樣的控制元件?JSHTML控制元件
- LiveKit:使用Go與WebRTC實現類似Zoom高影片質量GoWebOOM
- RoR的正確定位
- PHP 函式庫精講之類與物件PHP函式物件
- 小而美的框架—hyperapp框架APP
- 有沒有什麼好用的golang版本的git客戶端(類似python的gittle)GolangGit客戶端Python
- estk/log4rs: 類似log4j的Rust日誌框架Rust框架
- 類似gitbook的wiki選擇Git
- mysql類似merge的操作MySql
- 【PHP】CI框架原始碼DB.php(資料庫類)PHP框架原始碼資料庫
- php陣列的分類有哪幾個PHP陣列
- [Appium] Ios 有類似 Andriod 的 noReset 來清掉應用的快取嗎APPiOS快取
- 請問大家,我們中國有類似Spring一樣的工具嗎?Spring
- 求推薦,有沒有類似《笨辦法學 python》的書用來學 Java 的?PythonJava
- ElasticSearch類似Mysql的not in 和 in 查詢ElasticsearchMySql
- RabbitMQ推出類似Kafka的流StreamMQKafka
- 類似列表的view伸縮動畫View動畫
- 【Swift】類似於微博、微信的ActionSheetSwift
- Java EE和RoR的牛人感慨Java
- N多黑酷的RoR Code
- robot framework 移動端自動化測試有沒有類似 WEB 端的 SikuliLibrary 庫FrameworkWeb
- 團隊演講影片及其ppt展示
- PostgreSQL類似OracleMERGE功能的實現SQLOracle