特性
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是一個高性能的框架,以下的圖表展示了與其他流行的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使基準程序自動化。
版本
Yii目前有兩個主要的版本: 2.0 和 1.1。yii 最先發布穩定版本為:1.1.14 (2013年8月11日發布),yii 最新發布穩定版本為:2.0.0 (發布于 2014年10月12日發布)。
開發團隊
成員
Александр Макаров (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月加入
職責:維護論壇和核心框架的發布



















