YII 框架的優點有哪些?
YII 框架的優點有哪些? - 周健的回答
沒錯,這條回答就是針對你的回答的,無數次的at錯人後,我決定取消at了orz..
蹲坑的時候看到這條回答和一系列問題,我已經迫不及待提上褲子來回(反)答(駁)你的一系列問題了。
首先,你用了若干個絕對,我只能說佩服你的自信,「TP開發效率絕對高於Yii」、「TP必定更適合國人思維」、「TP附加價值絕對高於Yii」,你的這一系列絕對,對我來說就是不成立的,即便100個人里99個人贊同你的觀點,而我一個人反駁,「絕對」二字就不成立!
存在即有理,所以對於TP框架好壞我不做評論,不過曾經在知乎看到一位朋友對TP的評價,雖然露骨,但是我覺得在理--「TP談不上設計,只能說是一堆工具的集合」,即便如此,我也不否認TP,畢竟在國內的佔有率在那,就好像很多人噴PHP,還是那句話,存在即合理。
好,下面針對你的問題我一一回答
--------------分割線-----------
1、首先,提出這個問題,說明你對MVC模式的理解就有偏差,MVC只是提出了數據-視圖-業務邏輯的分離,可並沒有說視圖裡就不能有PHP代碼,只要視圖裡的PHP是在做」表現「的事情,他就不背離MVC。
其次,即便如你所說,視圖裡就千萬別出現PHP代碼,那麼Yii一樣可以引入Smarty等模版引擎,只不過我同樣認為沒必要,在很多場景下,引入Smarty,後端和前端開發人員都需要重新學習一套語言,而如果直接用PHP做模版,前端開發人員只需要簡單的學習語法就可以進行套頁面的工作,即便拋開效率不談,如果前端人員本來就既不會php也不會smarty,那麼他簡單的學習一些php語法,成本不見得比學smarty高。 所以,目前在我公司(前後端各20+人員規模)就是直接用Yii,並且使用php做模版;
2、widget,顯然他不是萬能,但你又能舉出一個例子說明什麼東西是萬能的嗎?(錢?笑~),舉一個適用的場景: 站點裡很多頁面都出現的搜索框,用widget來做就很方便
至於說傳JS的問題,用了5個月還不知道Yii的ClientScript怎麼用,也說明用的不是太深入;
3、gii的設計初衷就不是替你生成業務邏輯的,gii是針對Web開發過程中對錶的常規CRUD操作生成列表、表單及刪除動作,不說其他,我所做的所有項目後台都是基於gii生成,開發效率提升說巨大也不為過;
至於樣式,既然你不需要,難道你不知道可以自己定製一套Gii的模版嗎?
4、關於這個作者在海外還是在國內,這個問題我想就沒有回答的必要了,這與Yii本身無關。
綜上,回答僅針對答主的問題,不吹不黑,要吐槽起yii我大概也能說800字,只不過答主的問題確實不是yii應該被黑的點,只不過看到答主口口聲聲的代表國人說了若干「絕對「忍不住提出反對意見
我用過ci,tp,zf和yii,感覺tp是偽oop的框架,沒有任何設計模式可言,特別是把smart這類模板引擎嵌入到框架中更是一大敗筆,唯一的優點就是簡單易學,個人感覺yii比tp高出不止2個等級。
Yii和TP這兩個東西我都用過, TP用了一年多, YII陸續用了兩三年。
在我需要自己寫框架之初, 我深入研究了YII2.0框架的整體運行機制, 深感YII之優雅強大。 可以說YII是一個看似複雜,但如果深入去研究的話,你會發現他用著用著會越來越簡單 , 而TP是看似簡單,一旦設計到擴展之時,就會越來越難用。
一、Yii的組件式概念, 能夠讓程序 像搭積木一樣,去構建自己的系統,非常簡單 , 在應用層面上,無需考慮依賴關係;
二、實現了強大的依賴注入(控制反轉), 控制項之間,對象之間的依賴關係, 都完全可以通過一套通用的,可配置, 靈活的機制來實現,並做了完全隔離。 如你需要使用redis, memcache, db類等 。你只需要在組件的配置中聲明類似於 「redis」 =&> [ "class" =&> "class1" ],
其他應用程序訪問redis時 ,可直接訪問 Yii::$app-&>redis, 若你想替換成自己的redis類, 只需要改下配置文件即可 。
三、Yii的event事件。 Yii實現了像js那樣的編程思路, 你可以定義自己的事件, 綁定事件,觸發事件等。 極大了解決了程序之間的耦合問題。
比如一個方法func ,有「增查改」等三個步驟,且對應不同的表, 它被objA,objB,objC三個對象使用 。在func運行到 「增」 的時候, objA想對根據「增」的 狀態 做自己業務相關的處理handler1, objB和objC 也都有其需求,分別需要運行handler2和handler3 。 那麼用TP怎麼解決此類問題 ?
而利用 event事件 非常方便。具體怎麼用不說了, event事件的實現我覺得是觀察模式的最高運用。
比如Yii還有很多其他非常優秀的設計模式,比如行為等概念, 而且還有很多優秀的組件,比如widgt和validate, 在後台 , 前後端的所有欄位驗證,前端的搜索或列表等視圖, 基本上定義好配置就行了,不用碼代碼。 這些組件能極大的提高生產力和效率。
只不過你需要付出一些學習成本, 但磨刀不誤砍柴工不是么 ?加入一篇我的博文yiiframework中一種更加簡單構造局部頁面的方法 在Yii Framework下打造C#的Html.RenderAction
團隊使用Yii 接近兩年時間了。
我們從NET遷移過來使用php重新開發,當時考慮的相當多的框架,最後決定選用Yii
1、Yii 框架的代碼風格上於net比較接近,方便我們團隊原有人員可以很方便的閱讀php代碼,上手快。
2、Yii 的框架對擴展支持相當高,很方便擴展,我們慢慢的自己擴展了很多組件。最近甚至修改了程序入口,讓我們可以更加在框架內操控程序。
3、很重要的性能,Yii 的性能相對優秀,而且屬於輕量級框架。spl_autoload_register 預註冊,按需載入文件等對性能都有很大提高。
4、modules 設計是一個很優秀的東西,他理論上可以無限嵌套,當然不建議嵌套超過三層。雖然我們嵌套了兩層。
4、widget 窗口小部件的應用,可以更加方便的構造通用模塊。當然我們還有更加方便構造通用模塊的方法,後邊說。
5、其實集成的model,以及CActiveRecord模式 包含的驗證機制,都是很好的東西,但是約束性也相對強一些。
6、不得不說的緩存機制,Yii框架封裝了各種緩存方式,讓你只需要調用統一的方法就可以在不同的緩存中切換。
Yii最大的優點就是快速,敏捷,不拖沓,給程序員飛翔的能力。當然請不要做對比,不同的人適合/喜歡不同的東西,如果你沒用過Yii可以試試,至少我用了快2年了,感覺不錯。
我就在想,為什麼我們要用框架?框架只是工具,只是工具,只是工具,重要的事情說三遍
我作為一個自學的碼農,實在看不慣各種關於框架的撕逼,你用你的,他用他的,有什麼衝突,
誰好誰壞?還不是都用php寫的(c擴展的框架暫且不提)
我就發現中國好多人會裝比,用著一堆覺得方便的工具,就認為高效,優雅,方便了,問下,你實踐過,你實踐過每一行代碼的效率嗎?只會人云亦云,快?你用框架寫個hello world,我原生寫個hello world看看誰快?
又開始裝比,什麼團體合作,開發效率之類的,好,就算他厲害,是你寫的嗎?你了解就去用,沒人攔你。
php是php,請不要將其它的語言模式混進來,就因為你以前學的是java,php就要強制聲明變數?就因為你是c出身的,就覺得php垃圾,你可以不用,你可以去創造一門腳本語言,沒有人告訴你,這樣不可以,也許你能成為第二個php
都是用了別人的東西,老實講,你們的創造力在哪?就會撕逼,說這個不好,那個不好,只有自己用的才是最好的
有意思嗎?
我自己水平不行,我也沒學過tp,yii
我自己寫了個小框架,我用著覺得方便,這就行了
馬上又有人來噴我,菜鳥寫的東西,能跟大神寫的比?還不如老老實實用大神寫的東西,學習他的寫法
可是我為什麼要去這麼做?
我就是我,為什麼為了好看我就去整一個和別人一樣的臉?
那樣我還是我嗎?Yii有三個群,
兩個滿了,121116851 Yii中國 67572979 Yii
一個快滿了。127319423 Yiibook討論組
這裡馬上就會有很多人來報道的。。。
每天發碼中
Yii的優點我總結一句話是:Yii是PHP快速開發的最佳實踐。具體參考:http://www.yiiframework.com/doc/guide/1.1/zh_cn/changes和http://www.yiiframework.com/features/
要正真體會到,需要去用。
6.20補充:
目前國內在用的知名公司有盛大,多玩,飯否,小紅傘等。參考:http://www.isyii.com/sites
基於YII的開源項目有:http://www.isyii.com/open
我寫的基於sina開放平台的yii擴展: http://yii4sae.sinaapp.com Yii4sae是Yii框架部署到新浪開放平台(SAE)的最佳實踐。不用修改Yii源框架代碼也能將Yii部署到SAE,Yii的框架擴展性可見一斑。
2016.6.3補充:
目前Yii已經發展到2.0,Yii使用的公司已經是當初幾十倍以上.
2017.5.10補充:
可能還是支持PHP7最好的框架。
yii框架學習了一段時間,widget覺得還挺好,但是yii裡面很多組件和前端耦合性太強,而且學習成本相對其他框架來看有點高(比如說登錄驗證和授權模塊,官方文檔給的代碼例子雖然明了但是感覺還是很暈,有看懂他的時間我還不如自己DIY一個),RESTful做的還算好然而目前實際開發一些外包項目之類的幾乎用不上,gii幾乎在實際開發中用處不是很大,樣式太固定了,除非是大型項目中自己自定義樣式,這樣重用性就能得到提高。然後中文文檔還是存在一些翻譯問題導致理解困難。
我討厭他的activeform和jquery綁定如此之深,用吧,為jquery所累,不用吧,以後接手的人肯定會罵我!還有就是越來越zend化了
其他的都是喜歡的匿名的是不是都是來做廣告的啊。。。。這是技術問題啊。。。
YII確實很不錯,如果說過於依賴框架會導致不能真正懂得編程的話,我是反對的。
起碼YII對編程的理解和提高都是有幫助的,如果你沒有研究過YII就在這說YII不行的話,還是建議你去看看YII吧!
太複雜,把本來簡潔的php,弄得那麼複雜,如果不深入學習,很難用
時隔5年~我來挖墳!
我用TP1年半不評價它,就來討論你們說的YII
目前我YII用5個月
說YII好的請來回答我幾個問題!能回答的上我沒話說!
1.YII的MVC模式在哪裡?你要是說他有,那請問HTML頁面為什麼要用PHP文件來寫代碼?這種方式如何讓V也就是所謂的前端頁面設計師來和PHP程序員對接?難道MVC模式不是為了更好的讓程序員,和前端設計師更好的配合嗎?前端設計好後,還要我程序員再來重新把HTML複製過來弄一遍?還是說前端設計師也要學PHP呀?
2.widget,都說它方便,快,能自動生成,那麼我就納悶了,要是遇上業務邏輯,請問這個widget組件還有什麼用處?他是萬能的?我認為它就是一個死板的單一的模式?樣式能自定義嗎?裡面傳個種參數,但是你有試過傳JS嗎?JS代碼別解析成字元串,你又是怎麼解決的?解決不了?那麼這個組件是不是多餘的呢?
3.gii,提升了速度?無非就是死板的一種模式,我還不信它能幫你生成業務邏輯了!至於這GII生成的一系列東西,敢問我是不是可以複製過來然後修改下命名空間和類名就行了?至於它生成的視圖文件我就不說了,都是統一的樣式,我不需要!
4.YII的作者同樣是中國人,為什卻變成了外國的東西?YII作者不到國內來發展YII這又是為什麼?
為什麼兩彈元勛會留學後卻又回到祖國發展祖國事業?這裡面的個人問題其他的我們就不討論了!
總結下我只能說:適合國人邏輯思維的必定是TP,要是學習YII呢,那就是更高深的人了!至於配合式的開發效率我就不說了,TP絕對高於YII,對於技術宅,就一個程序員,又弄PHP又弄前端HTML的人,你可以忽略這個問題!
相對來說!YII只適合大型公司,想把東西做得更好的公司,但不會頻繁的去改動!
而TP而言,適合中小型站長以及網站建設公司!因為在這方面TP的附加值絕對比YII高很多!
性能不錯,代碼自動生成,widget,插件多並且容易擴展,整個框架乾淨清晰,而且基本上由Qiang一個人主導,是中國人,中文支持不錯。
框架就是代碼組織法,理論來講,所有代碼都應該從框架性代碼派生而出,所以不用框架,反而不容易體會OOP。話說純PHP不也是框架性結構嘛
yii的開發有一點點亂, 不像ROR了。 我還是喜歡cakephp
從QeePHP、ZendFramework到用Yii1-Yii2,到最近用了一次laravel,仍然最喜歡Yii2,當然也可能因為使用它的時間最長,有感情了吧。
Gii
有人說它很死板,好吧。我想當你熟悉了yii後肯定不會用gii來生成controller,但是用它來生成model、module還是相當方便的,尤其是當一個表變化後需要重新生成model時候,真的挺方便的。
Migrate
可能我理解的不夠,但是我真心覺得它比laravel的migrate好用的多,yii命令也很簡練。
Yii2-debug
絕對是神器,我在自己的網站寫過一篇 yii2-debug 小強必殺技,都是很簡單但是很實用的功能,比如對session的顯示、action的快速定位、路由解析流程顯示、SQL語句執行時間和內存佔有量的分析、PHPSTORM的100%兼容、任意代碼執行時間的圖表顯示等等等等。
最重要的,該擴展由yii2團隊成員維護,跟進很快,開發速度提高不是一點點。
社區和擴展
雖然yii2社區沒有laravel那麼火爆,但是這十幾年yii2穩定的團隊,讓我對這個框架具有一份信任和安全感,雖然Qiang現在已經離開了團隊開發,但是另一位核心成員 samdark 已經計劃全部時間做yii2了,作為一個開源項目,我想他的這個決定是一輩子的,在擴展數量上大家可以去composer搜索下,也是老多老多,不比laravel啥的少。
開發速度
我只能說熟能生巧,一個項目的速度取決於你對項目的規劃,包括各種類的繼承關係,包括對擴展的使用,如果你都自己造輪子,那就給你一個鳥哥,你也提速不起來,復用和規劃才是重要的。
當然,我不是說yii2比其他框架慢,起碼到現在,我還沒有看過比它開發速度快的。
國內情況
國內的社區不是太成熟,現在最大的是yiichina,但是人氣一般,我自己也在做這方便努力,包括錄製yii2的視頻和技術文章,希望不久的將來,yii2能火到它應該火到的程度吧。
最近我也在做一個免費的yii速查表,剛剛開始,如果你有好的建議可以給我說。
速查表 Yii2速查表
yii很好很強大
yii還是不錯了,我看到評論里有說到thinkphp,我實在忍不住跳出來說兩句。第一次使用thinkphp,光看他的開發手冊都能發現它的漏洞........,直接擼了官網一把,毫無成就感,因為太low了,一臉的嫌棄他,後續還擼了幾次。看著國內那麼多phper用thinkphp我真的有點傷感。以前國內也有一個優秀的框架叫qeephp。和yii很像,有些地方還超過yii。
這個框架結合了國內流行的 Yii2、TP5、CI 的特性,簡單又好用,個人開發首選。
mixstart/mixphp
推薦閱讀:
※怎麼在網上找到簡單的 PHP 實例?
※如何從頭開始學習 PHP?看教程,從 WordPress 入手怎麼樣?
※關於 PHP 的好書有哪些?