概述
Yii是一個基於組件的高性能PHP框架,用於開發大型Web套用。Yii採用嚴格的OOP編寫,並有著完善的庫引用以及全面的教程。從 MVC,DAO/ActiveRecord,widgets,caching,等級式RBAC,Web服務,到主題化,I18N和L10N,Yii提供了今日Web 2.0套用開發所需要的幾乎一切功能。事實上,Yii是最有效率的PHP框架之一。
Yii是一個高性能的PHP5的web應用程式開發框架。通過一個簡單的命令行工具 yiic 可以快速創建一個web應用程式的代碼框架,開發者可以在生成的代碼框架基礎上添加業務邏輯,以快速完成應用程式的開發。
優點
Yii容易學習和使用。你只需要知道PHP和面向對象編程,便可以很快上手,而不必事先去學習一種新的架構或者模板語言。
用Yii的開發速度非常之快,除框架本身之外,需要為套用所寫的編碼極少。事實上這是最高效的開發框架之一。
Yii 具有高度的可重用性和可擴展性,是純粹的面向對象的。Yii中的一切都是獨立的可被配置,可重用,可擴展的組件。更重要的是Yii有著越來越多的擴展庫。主要由使用者貢獻出的組件組成,這可能有助於大大減少您的開發時間。
Yii 有著豐富的功能. 從 MVC, DAO/ActiveRecord, 到 主題化, 國際化 和本地化, Yii 提供了幾乎所有今天的Web 2.0應用程式開發所需的功能。
在Yii參考手冊是Yii完備的文檔,有著你學習和掌握它所需要的任何信息。
Yii一開始就精心設計,以適應複雜的WEB套用開發。他不是一些項目的副產品或者第三方集成。而是融合了作者豐富的 Web 套用開發經驗和其它熱門 Web 框架和套用的優秀思想的結晶。
最後,但並非不重要,Yii是免費的,Yii遵循最新的BSD許可。它確保了它的第三方開發也循序和BSD相兼容的許可。這意味著無論從法律上還是財務上來說,您都可以自由的使用yii來開發任何一個開源的或者私有的套用。
特點
快速
Yii 只載入您需要的功能。它具有強大的快取支持。它明確的設計能與 AJAX 一起高效率的工作。
安全
Yii 的標準是安全的。它包括了輸入驗證,輸出過濾,SQL 注入和跨站點腳本的預防。
專業
Yii 可幫助您開發清潔和可重用的代碼。它遵循了 MVC模式,確保了清晰分離邏輯層和表示層。
特性
Yii幾乎擁有了當今Web 2.0套用發展的全部特性。下面是這些特性的一個簡短的清單。
模型-視圖-控制器(MVC)設計模式:Yii在WEB編程中採用這一成熟的技術從而可以更好的將邏輯層和表現層分開。
資料庫訪問對象(DAO)和Active Record:Yii允許開發者模型資料庫中的數據對象,從而減少他們在寫很長和重複的SQL語句上的精力。
與jQuery整合:作為最流行的JavaScript框架之一,jQuery可以編寫高效而靈活的JavaScript接口。
表單輸入和驗證:YII使得收集表單輸入非常容易和安全。 Yii擁有一套確保數據的有效性的驗證器,它也有輔助方法和部件,顯示驗證失敗時的錯誤。
Web 2.0部件:由jQuery的支持,YII配備了一套Web 2.0的部件,如自動完成輸入欄位,TreeView等等。
身份驗證和授權:Yii具有內置的身份驗證支持。它也支持通過分層的基於角色的訪問控制(RBAC)的授權。
主題:它能夠瞬間改變一個Yii套用的視圖。
Web服務:Yii支持自動生成複雜的WSDL服務規範和管理Web服務請求處理。
國際化(I18N)和本地化(L10N):Yii支持訊息轉換,日期和時間格式,數字格式和界面本地化。
分層快取方案:Yii支持數據快取,頁面快取,片段快取和動態內容。快取的存儲介質,可以輕鬆地更改而不觸及應用程式代碼。
錯誤處理和日誌記錄:錯誤的處理很好的呈現出來,日誌信息可以分類,過濾並分配到不同的位置。
安全:Yii配備了許多安全的措施,以幫助安全的Web應用程式,以防止網路攻擊。這些措施包括跨站點腳本(XSS)預防,跨站點請求偽造(CSRF)預防,Cookie篡改預防等。
符合XHTML:Yii的組件和命令行工具生成的代碼符合XHTML標準。
自動代碼生成:Yii提供了可以自動生成的代碼的工具,根據你的需要,例如生成一個程式骨架,CRUD套用等等。
完全面向對象:Yii框架堅持嚴格的面向對象編程範式。它沒有定義任何全局函式或變數。而且,它定義的類層次結構允許最大的可重用性和定製。
友好的使用第三方代碼:Yii精心設計讓它第三方代碼非常好的工作。例如,你可以在你的Yii應用程式中使用PEAR或Zend Framework的代碼。
詳細的文檔:每一個單一的方法或屬性都非常清楚的記錄著。同時提供了一個全面的教程和一些新手教程。
擴展庫:Yii提供了一個組成用戶提供組件的一個擴展庫,這使得上述功能列表是永無止境的。
關於Yii
Yii是一個基於組件、用於開發大型 Web 套用的高性能 PHP 框架。在WEB開發中Yii可以最大限度的實現代碼重用,極大的提高開發的速度。名字Yii(讀音是Yee or [ji:],應該就是“易”的讀音 )代表的是容易(easy),高效(efficient)和可擴展(extensible)
環境需求
要運行一個 Yii 驅動的 Web 套用,你需要有一個支持 PHP 5.1.0 或以上版本的 Web 伺服器。
對於打算使用 Yii 的開發者來說,懂得面向對象編程(OOP)會非常有幫助。因為 Yii 是一個純 OOP 的框架。
適用範圍
Yii 是一個通用的 Web 編程框架,可以用於開發幾乎所有的 Web 套用。由於它是輕量級的且具備了成熟的快取解決方案,它特別適用於開發高流量的套用,例如門戶,論壇,內容管理系統(CMS),電子商務系統等等。
與同類產品比較
和多數PHP框架類似,Yii 是一個 MVC 的框架。
Yii 以其優異的性能,豐富的功能和清晰的文檔勝出其他框架。Yii 從一開始就仔細設計以適合嚴謹的 Web 套用開發。它既不是一個其他項目的衍生品,也不是一個第三方工作的組合。 它是作者豐富的 Web 套用開發經驗和對大多數流行的 Web 編程框架與套用的研究與思考的成果。
性能
Yii是一個高性能的框架,以下的圖表展示了與其他流行的PHP框架比較下Yii的高效率。在這個圖表中, RPS代表“每秒請求”,描述了此框架每秒執行多少個請求。這個數字越大,此框架的性能越高,我們可以看到,在這個比較中 Yii 勝過其他框架。The performance advantage of Yii is especially significant when the widely used APC extension is enabled.
Performance alone is not the whole story (otherwise we should all use plain HTML or PHP). With such superior performance, Yii still provides a very rich feature setwhich can greatly improve your development efficiency.
為什麼Yii如此之快
Yii如此快速是因為它廣泛地使用lazy loading技術。比如, 直到第一次使用到這個類,才會包含進來;直到對象第一次訪問,才會創造這個對象。Other frameworks suffer from the performance hit because they would enable a functionality (e.g. DB connection, user session) no matter it is used or not during a request.
標準設定
下面我們解釋怎樣設計基準套用並且得到上面的RPS結果.
基準請求
Since our goal is to compare the minimal overhead of each framework, the benchmark application for each framework should be the simplest one. We choose to display a "Hello World" text string by placing an echo statement in the default action of each application. Any additional framework features (e.g. session) are disabled to ensure fairness of the comparison. To obtain a copy of the benchmark applications, please check out the phpmark project.
為什麼用“Hello World”
我們做“hello world”的測試主要是為了達到我們的目標,如:找出每個框架地 最小代價。很多人抱怨說應用程式“hello world”很沒意義,因為在真實世界的應用程式經常需要去涉及更複雜的任務,比如資料庫查詢。這是不對的。實際上,尤其是在一些大規模的web2.0應用程式中,我們經常遇到的情況通常是相當地接近“hello world”。例如:應用程式要回響ajax請求返回當前伺服器的時間。頁面有大部分內容在快取,應用程式只需要抓取快取的內容並顯示之。
另一個用“hello world”的原因是當引用更複雜(如:資料庫查詢)的特徵時,對照的清晰將很難保證。例如:框架可以在資料庫查詢執行得非常有效率,但缺少快取方案。當另一個框架在資料庫查詢上稍慢,卻有高級的快取特徵來緩和系統損耗。總而言之有包含了太多的因素來進行清晰的對比。
標準工具和環境
用ApacheBench工具的指令“ab –t 30 -c 10 URL”來獲取RPS編號(如:在並發級數10運行test 30秒)。為了獲得每個框架的編號,我們先停止再啟動Apache WEB伺服器來避免干擾。還要運行測試程式幾次來“預熱”測試環境。在phpmark project中,有個叫benchmark. sh的shell script使基準程式自動化。
歷史
Qiang 在開發和維護 Prado 超過三年並意識到需要一個簡單,高效和擴展性框架,於是,在2008年1月1日開始了 Yii 項目。
在2008年10月經過十個月的獨自開發,Qiang 發布了 Yii 的第一個試用版本並迅速得到廣泛的關注,因為 Yii 在性能上的勝出其他主流的PHP框架,而且幾乎擁有了所有的特性。 在2008年12月3日,Yii 1.0正式發布了。
版本
Yii目前有兩個主要的版本: 2.0 和 1.1。yii 最先發布穩定版本為: 1.1.14 (2013年8月11日發布),yii 最新發布穩定版本為: 2.0.0 (發布於 2014年10月12日發布)。
Credits
Yii 的很多想法來自其他著名 Web 編程框架和應用程式。下面是一個簡短的清單。
Prado:這是 Yii 的主要思想來源。Yii 採用了基於組件和事件驅動編程模式,資料庫抽象層,模組化的套用架構,國際化和本地化,和許多它的其他特點和功能。
Ruby on Rails:Yii 繼承它的配置的思想。還引用它的 Active Record的 ORM設計模式。
jQuery:這是集成在 Yii 為基礎的 JavaScript 框架。
Symfony:Yii 引用它的過濾設計和外掛程式架構。
Joomla:Yii 引用其模組化設計和信息翻譯方案。
許可
Yii的發布遵循BSD許可。這意味著你可以免費的使用Yii來開發開源或者不開源的WEB套用
開發團隊
成員
Александр Макаров (samdark)
俄羅斯
2010年3月加入
職責:核心框架開發
Jonah Turnquist (jonah)
美國加利福尼亞
2009年9月加入
職責:開發官方的擴展庫
Sebastián Thierer (sebas)
阿根廷
2009年9月加入
職責:開發官方的擴展庫和核心框架的發布
Wei Zhuo (wei)
澳大利亞悉尼
2008年9月加入
職責:核心框架的開發和項目的網站
Qiang Xue (qiang)
美國華盛頓
創建者
職責:參與所有事物
歷史成員
István Beregszászi (pestaa)
匈牙利
2009年9月加入
職責:維護論壇和核心框架的發布