我對Laravel ThinkPHP Yii symfony2 CI cakephp 的見解

這是個人真心體會,在嘗試使用Laravel、ThinkPHP、Yii、symfony二、CI、cakephp、Yii2 以後的真實想法(default7#zbphp.com)。php


1)ThinkPHP (版本號3.1.3)
laravel

我一開始用到的是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

我學會了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模板裏面的寫法耦合度更高,便放棄了。cookie


3)cakephp (版本號 2.5.1)
架構

到了這個時候,內心想的是就選一門easy點的框架來講,想到了很是多年曾經就聽過的那一款框架CakePHP(最新版本號cakephp 2.5.1)。下載下來安裝,看文檔不支持命名空間、不用PHP最新的功能方法。看了英文的一部分文檔,很是方便的感受,對照yii,跟thinkphp同樣有專門講到圖片驗證碼、SESSION、cookie操做,很是相似thinkphp,很是多都爲你作好了。而後我下載來作本身的一個站點,我一開始就先作管理員部分,結果就發現,依照cakephp 的思路,管理員和前臺事實上應該是在一個文件中面的。比方你有一個Post表,那麼你的管理員和前臺的針對Post的操做全部都是在PostController裏面,而我期待的是必須先後臺分離,沒有耦合composer


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的不論什麼都是對象的思路不同,他是不論什麼都是組件,低耦合yii



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是差點兒最好的,追求的是運行效率、速度(固然相對)。

對照了這麼多框架,發現一個現象,中國的程序和國外的程序猿的思惟不一樣點,中國的程序猿是看錢包點菜,外國的程序猿全然是看本身喜愛來點菜。用第二種說法來說,中國的程序猿是努力去適應環境,而國外的程序猿是努力改變環境。怎麼來講,相同一個需求項目,中國程序猿首先考慮到的是server支持嗎?版本號支持嗎?承受得了多少訪問?配置方面的限制怎麼樣,怎麼樣執行最快,國內90%以上的PHP程序都是執行在虛擬主機上,一臺server數百個甚至數千個站點。而國外的程序猿全然不需要考慮這些,他們依照本身的思路來,全然不考慮配置,他應該認爲怎麼樣一個架構思路,而不用去關心機器怎麼樣執行最快,人來決定架構,而不是機器配置決定架構,有種很是文藝的感受

比方Laravel,他裏面每一個網址就必須寫一個路由,這全然是不考慮server性能,若是整個站點有3000不一樣形式的個網址,那一次性載入得多少耗費??還有國外比較流行的程序Drupal,也是全然不計較server的配置,而是單純從人的思考的角度去規劃的,他將所有的內容全都想象成節點,key-val的形式,完全忽略配置的限制。我在本地機子(雙核CPU 6G內存)的電腦上執行drupal都卡得沒法形容,更別提上傳到server。(文 bydefault7#zbphp.com)



==============2014-6-22補充一下=================

補充一下,美國的主機上dreamhost提供的PHPserver是支持最新版的PHP的,後臺可以自由切換。因此支持所有最新框架。

相關文章
相關標籤/搜索