Yii和ThinkPHP對比心得


本人小菜鳥一只,為了自我學習和交流PHP(jquery,linux,lamp,shell,javascript,服務器)等一系列的知識,小菜鳥創建了一個群。希望光臨本博客的人可以進來交流。尋求共同發展。搭建平台。

本人qq群也有許多的技術文檔,希望可以為你提供一些幫助(非技術的勿加)。

QQ群:   281442983 (點擊鏈接加入群:http://jq.qq.com/?_wv=1027&k=29LoD19)    QQ:1542385235

 

這是我的真心體會,在嘗試使用Laravel、ThinkPHP、Yii、symfony2、CI、cakephp、Yii2 之后的真實想法(default7#zbphp.com)。

1)ThinkPHP (版本3.1.3)

我一開始用到的是ThinkPHP 3.1.3,入門門檻就是網址與方法對應這一點。當初我接觸ThinkPHP3.1.3的時候其實3.2版本剛出不久,3.2與3.1.x相比是部分重構,用上了最新的 命名空間 ,考慮到購買的虛擬主機可能不支持命名空間(命名空間必須PHP 5.3.3+才支持),也考慮到國內大部分企業如果已經用上了ThinkPHP,肯定也可能不是最新版的,所以一開始選擇的是ThinkPHP3.1.3,用他做了一個網站。總體感覺很好用,他為你做了盡可能及的一切。而且thinkphp是一家公司在支持,這樣就不會說突然倒閉解散,如果是企業想用PHP來做一個平台的話,很不錯的選擇,長期穩定。

2)Yii (版本 Yii 1.1.14)

我學會了ThinkPHP之后,我就想到了再多學一門框架吧,這樣以后找工作也更好一點,談也好談。然后偶然一次我去一家金融方面的公司面試PHP,他們用的是Yii。回來后網上搜索了Yii相關資料,看到很多人對Yii的介紹稱贊, AR、延遲加載、DAO、L10N、I18N,感覺yii一定很有前景 。便開始研究Yii(Yii 1.1.x)。看手冊,全英文的,偶然有看到帖子說Yii作者是中國人。后來才確認Yii 確實只中國人寫的。看了入門,自己下載下來安裝,感覺以自己現在的水平來說很難,很多要記憶的zii widgets,而且耦合度非常高,( 我剛開始接觸Yii的時候寫的一個看法 http://bbs.csdn.net/topics/390807796 )Html模板里面的寫法耦合度更高,便放棄了。

 

3)cakephp (版本 2.5.1)

到了這個時候,心里想的是就選一門容易點的框架來說,想到了很多年以前就聽過的那一款框架CakePHP(最新版本cakephp 2.5.1)。下載下來安裝,看文檔 不支持命名空間、不用PHP最新的功能方法 。看了英文的一部分文檔,很方便的感覺,對比yii,跟thinkphp一樣有專門講到圖片驗證碼、SESSION、cookie操作,很類似thinkphp,很多都為你做好了。然后我下載來做自己的一個網站,我一開始就先做管理員部分,結果就發現, 按照cakephp 的思路,管理員和前台其實應該是在一個文件里面的 。比如你有一個Post表,那么你的管理員和前台的針對Post的操作全部都是在PostController里面,而我期待的是 必須前后台分離,沒有耦合 。

4)symfony2(symfony 2.5)

如果不是一本書上介紹到symfony,並且對他有很多非常好的評價,我想我絕對特不會知道並關注symfony2的。開始接觸symfony2, 發現他安裝方法跟我以前接觸到的PHP完全不一樣,composer安裝,很新穎,這 完全顛覆了我以前對PHP的某些認識 。Symfony2必須在PHP 5.3.3以上的版本,其實現在再去看,是必須PHP 5.4+以上版本,因為他里面的一些組件component要求的是最新版本,因為我寫這篇文章的時候,我對這些框架的接觸都是在數個禮拜之前,而這一段時間看的框架太多,可能有點混淆,如果有紕漏,或者探討可以發郵件 default7#zbphp.com。安裝好了symfony2之后,仔細閱讀symfony2的內容,他最大的特點就是將一整套程序的運行對比成電腦計算機的 Input+Output+CPU 。Request Resonse 和 PHP處理部分( 其實這樣的思路后來其他的框架Yii laravel cakephp 3.x全都借鑒了 )。我再繼續閱讀symfony2的文檔,他里面不會像thinkphp那樣講圖片驗證碼、IP、IP歸屬地怎么查詢、圖片怎么上傳處理之類的,搜索很多相關資料,感覺 symfony2是一個HTTP框架,但是並不是MVC框架,而是一個HTTP框架。他有C 和V,但是沒有M 。思路跟yii thinkphp完全不一樣的, 組件化 component的思想,跟Ror的任何都是對象的思路不一樣,他是 任何都是組件,低耦合 。

5)Laravel (Laravel4.2)

我繼續搜索PHP MVC Framework方面的帖子,找了很久,看到有一篇文章上配了一張圖(上面那一張),說截止到2013年年底,Laravel占有率是最高的!然后便去了解laravel,百度搜索Laravel,已經有蠻多網站了,比如 www.golaravel.com,介紹laravel框架,文檔,介紹到Restful功能、是企業級框架。

其實我一直以來都想找一個這樣的框架,長期、穩定,不會一下子就解散了不支持了,不會說今天一變明天一變。並且有命名空間最新的幾個功能得有,可以 省去以后經常重構麻煩。下載安裝laravel,也是composer方式安裝。然后開始用了,發現他官方上一直很推崇的路由功能,使用起來卻很繁瑣。每一條請求網址都要寫一條路由。想到這里覺得不敢想像,一個網站的網址很多的,而且不相同的規律,包括管理員后台,如果這樣 每一條網址都要寫一個路由 ,而且全部都是些到routes.php這一個文件里面去, 你想象一下, 加載要耗費多少資源時間???而且描述上說的文檔豐富,但是看到了真的很少,不齊全(對比symfony cakephp,他的文檔真少)。

6)重新回到Yii(Yii 2.0)

其實我這一陣子一直都在尋找一款MVC框架, 支持命名空間、支持AR、方便好用,有圖片驗證碼自動生成、圖片上傳處理,水印處理,支持I18N,多語言、有很多人在使用、成熟的文檔、穩定長期、適合企業級 。最后對比了這么多框架還是回到了最開始想到的那幾個框架,重新回到Yii。想到自己為什么一開始就覺得Yii不適合,但去對比了其他框架,才發現Yii是幾乎最好的,追求的是執行效率、速度(當然相對)。

對比了這么多框架,發現一個現象, 中國的程序和國外的程序員的思維不同點 ,中國的程序員是看錢包點菜,外國的程序員完全是看自己喜好來點菜。用另外一種說法來講, 中國的程序員是努力去適應環境,而國外的程序員是努力改變環境。 怎么來說,同樣一個需求項目,中國程序員首先考慮到的是服務器支持嗎?版本支持嗎?承受得了多少訪問?配置方面的限制怎么樣,怎么樣運行最快,國內90%以上的PHP程序都是運行在虛擬主機上,一台服務器數百個甚至數千個網站。而國外的程序員完全不需要考慮這些,他們按照自己的思路來,完全不考慮配置,他應該覺得怎么樣一個架構思路,而不用去關心機器怎么樣運行最快, 人來決定架構,而不是機器配置決定架構 ,有種 很文藝的感覺 。

比如Laravel,他里面每一個網址就必須寫一個路由,這完全是不考慮服務器性能,假設整個網站有3000不同形式的個網址,那一次性加載得多少耗費??還有國外比較流行的程序Drupal,也是完全不計較服務器的配置,而是單純從人的思考的角度去規划的,他將所有的內容全都想象成節點,key-val的形式,徹底忽略配置的限制。我在本地機子(雙核CPU 6G內存)的電腦上運行drupal都卡得無法形容,更別提上傳到服務器。

 

本人qq群也有許多的技術文檔,希望可以為你提供一些幫助(非技術的勿加)。

QQ群:   281442983 (點擊鏈接加入群:http://jq.qq.com/?_wv=1027&k=29LoD19)    QQ:1542385235

 

我的淘寶店,可以進去逛逛噢:https://shop108912636.taobao.com/index.htm?spm=2013.1.w5001-7867000954.3.1d29318dPlLar7&scene=taobao_shop

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM