thinkphp與yii 哪個更優秀,分別是哪些方面優秀?

來源:互聯網
上載者:User
關鍵字 php
php 架構

回複內容:

關於tp和yii的比較,首先一點是,yii和tp不是一個等級的東西(知道賽亞人和超級賽亞人的區別嗎?),另外,個人特別反感tp,有個很大的原因就是,tp太自以為是,做了很多方便國人的事,打個比方,有個豬肉老闆賣你豬肉,你要一斤瘦肉,他給你兩斤骨頭一斤肥肉一兩瘦肉,這就是tp,而yii就是隔壁的老闆,你要一斤瘦肉,他就給你一斤。yii用配置和組件等方式的效果是,你要什麼他就給你什麼(重點是你會不會配置,所以難學),tp就是什麼都弄好了,看起來什麼都好用,實際上層次被別人拉了好幾個等級thinkphp和yii不是一個量級的東西……謝邀
---------
先說結論:yii更優秀,而且要比thinkphp優秀很多。
要回答分別是哪些方面優秀我們先要明白,架構是用來幹什麼的。
架構的作用:1、簡化開發。2、提高工程的可維護性。3、規避程式設計語言本身的坑和陷阱。
那麼我們就從這3個方面來討論下著二者的優劣。
1、簡化開發方面:從新手的視角來看(或者表面來看),thinkphp做項目更簡單,因為其一提供了大部分web開發常用類庫,其二中文手冊寫的很詳細。但事實上,thinkphp有兩個缺失的特性導致一旦項目做久或者稍微上規模,就會使人頭痛不堪,這缺失的兩個特性分別是:完整的AR支援以及完善的多層次模型
其次,web項目開發中大部分代碼都是重複的,因此自動化代碼產生工具是必不可少的,截至最新的tp3.2.3,我仍然沒看到tp對自動化工具有任何支援的跡象
2、可維護性,缺失了完整的AR和多層次模型,代碼不可能工整到哪裡去,代碼一多,原始碼必然跟麵條一樣雜亂。最重要的時,TP沒有unitTest,這導致重構都無門。同樣,資料庫方面,tp缺失了資料移轉工具,這都導致了項目後期維護由很大困難
3、規避程式設計語言本身的坑和陷阱:tp和Yii都是由PHP做的實現,PHP本身有很多的坑和陷阱,諸如混亂的語言結構與函數傻傻分不清的關係,變數轉換的陷阱,淩亂不堪的類庫命名。這些在yii裡基本都得到了改善,Yii完全用物件導向的方式構建,常用web類庫都以組件方式呈現,終於改善了PHP程式員邊寫代碼邊百度:‘XX功能該用哪個函數’的情況。反觀TP,僅僅對常用類庫封裝成class,要用什麼取什麼,根本沒做過精心的設計,完全像是一個多年的程式員攢了些類庫,然後七拼八湊而成的一個架構,因此我常常說,thinkphp是個偽MVC架構。
-----------------------------------------------------
說在最後的話:
以上我吐槽了諸多thinkphp的壞話,但事實上,從生產環境來說,thinkphp是完全合格的,目前國內的大部分項目都構建在TP上。從運行實踐來看,TP完全符合生產標準,使用者量也最大。題目問tp和Yii那個優秀,自然是yii優秀,這就好比,python無論從哪方面看,都比php優秀,但是用的人就是沒php的多一個道理整體說起來yii比較好,優點在於輕量級,緩衝做的不錯,有很多實現方法很好的避免對php擴充的依賴,執行效能比TP高,等等。
當然,TH也有自己的有點。例如,社區很火爆,中文的新手教程很詳細,比較容易上手。缺點也很明顯,例如BUG多。。。。沒玩過ThinkPHP, 至少Yii2的國際化做得好些,ThinkPhp 的本土化好些。

首先,如果有人認為我們應該無條件支援國產:
支援愛國者相機,新機必裝360安全衛士,上網預設百毒搜尋,生病只看中醫,喜歡國產新聞用戶端的預設推薦,去雞血論壇,看人民艸報和環球屎報,從來不翻牆,堅決抵制日貨……
那麼我覺得這種人可能不適合編程這個行業。

至於差別嘛,首先一點其實是很容易被忽略的,也就是影響力,國際上有名的 Framework benchmark 是不會考慮 ThinkPHP 的。各方面的資料很不好找,國內技術貼的品質和數量都很難和全世界相比。國際上最知名的技術問答網站 StackOverFlow 上也是沒有 ThinkPhp 的。

當然如果國際化需求為零,自己英文也不是很好,那麼 ThinkPHP 未必是壞選擇。尤其是開發人員都是國人,也沒有外國以及本土大客戶的情況下。而且應用Composer 之後,理論上支援PSR標準的,架構組件都是可以混用的。而 Yii 的一點點優勢只是在於有核心開發人員是 PSR 的出品方,PHP 架構協作組織的成員。

對於技術選擇,唯一的忠告只有,不要為你支援的技術月台,而是客觀比對他們是否適用於當前的應用情境。最簡單的例子莫過於 NoSQL 了,選擇哪種資料庫取決於應用情境。有些工作其他的的資料存放區方案不是不能做,而是有更適應情境的方案。所有方案都用 MySQL / MongoDB / Cassandra 才是問題所在。同理如果你喜歡輕量 RESTful 後端+重前端的設計,你可以選擇用micro-framework,比如Slim framework 或者 selix。如果你對效能要求很高,你可以選擇用Micro-ORM,而不是ActiveRecord,而如果業務很複雜,我覺得可能 ActiveRecord 也不夠用了,必須用DataMapper 甚至 Repository Pattern. 任何架構都絕不敢說覆蓋100%,既做不到,也沒有必要。

Laravel / Symfony 其實也是值得推薦的,前者的文法糖很棒,擁躉也很多,後者及其靈活,作者在 PHP 界也很有名。
只是他們有的時候不太在乎效能之類的。這種“A和B哪個好”的問題都是無稽之談,永遠記住一點,不管什麼東西,適合自己的才是最好的,比如你就想做幾個簡單頁面,那任何架構都是多餘累贅!沒一個好的,望LZ意會。。兩個都用過。如果想快速招到人,招的人水平不用太高,來了不麻爪。選tp沒錯的。反之yii lavara symfony 都可以yii非常強大。thinkphp,多看上兩遍源碼你就搞懂了。我現在直接就是拿thinkphp來作為類庫。就是說一些常用方法,就直接從thinkphp裡面copy出來。。。省的自己網上找了。。。
非常建議你學習一下yii。非常的棒。他的緩衝非常的好。建議你用用ThinkPHP5在說吧我看了好多個對比貼,總結了一些


tp好,國內很多人用,快速開發,易用易學,他的意思是在說,他學tp的
yii好,外國的,逼格自然高,層次自然高,他的意思是在說,他學yii的

個人感覺,tp和yii都行,兩者用的人都很多,文檔也多,就不要去學其它架構了,比如ci什麼之類,其實我的意思是在說,我tp和yii都有學
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.