① php哪個框架比較好
首推 Laravel ,其次是 Yii,Laravel 的設計思想以及在工程實踐上的支持,超過 ThinkPHP 好幾個世代。如果說原生的 PHP 是火槍, ThinkPHP 就是來福槍,Lavavel 則是沖鋒槍。你要打獵的話,帶把來福槍完全足夠了,但是要上戰場,非得更自動化的沖鋒槍不行。
好處有很多啊:
Composer 做包管理
標準的 Autoload 實現,可以讓 `include xxx.php` 成為歷史
各種依賴注入
ORM 支持
好用的命令行和腳手架
豐富的文檔和活躍的社區
即使有這么多好處,也不過是追趕了幾年前 ROR 的水平,還在用 ThinkPHP 的人,不過是懶得接觸新知識罷了。
說ThinkPHP適合國人使用的人,自黑的時候不要帶上別人,多謝。
② C語言:某班有5個學生,三門課。分別編寫3個函數實現以下要求:
鍾勝輝談PHP發展的現狀和前景
記者:從Web開發的歷史看來,PHP、python和Ruby幾乎是同時出現的,都是十分有特點的、優秀的開源語言,但PHP卻獲得了比Python和Ruby多得多的關注度(PHP在本月的TIOBE排行榜上已經排行第三,超過C++了)。您認為這和PHP旨在網站開發的立足點與PHP語言本身的特點有很大關系么,還是有什麼其他的因素影響?
鍾勝輝:三門語言當中,無疑php是最流行的,而Python和Ruby在最近幾年也有著不錯的發展趨勢。我個人認為,Ruby的流行更多地源於Ruby on Rails,這個框架的流行程度甚至超過了Ruby語言本身,也引發了其它語言平台上對框架的研究。而Python在近來的被關注度和發展速度要超過Ruby,被一些喜歡創新的項目採用,這可能要更多地歸功於google。
這三種語言都是相當優秀的腳本語言,為什麼PHP能大行其道,殺入排行榜的三甲呢?從表面上來看,這是就業環境使然。越來越多的新公司或者新項目使用PHP,這使得PHP相關社區越來越活躍,而這又反過來影響到很多項目或公司的選擇,形成一個良性的循環。就我目前了解到的情況,PHP是國內大部分web項目的首選,而且有很多公司從其它語言(如ASP,java)轉到了PHP。合適的就是最好的,PHP的快速,開發成本低,周期短,後期維護費用低,開源產品豐富(這點可以影響到很多項目的決策),這些都是另外兩種語言無法比擬的。另外,在很多大項目中,Python更多地是做為一種「粘合劑語言」出現,似乎正在走向與PHP不同的發展方向,讓我們拭目以待。
記者:PHP開發框架的盛行是由RoR的火爆所引起的,而PHP框架的發展也從模仿Rails到逐漸有了自己的風格。不過仍然有很多入行較早的PHP開發者至今仍認為PHP這種快捷的語言不需要框架,甚至認為只要有優秀的架構,框架根本沒必要。您認為PHP框架對PHP而言是必要的么?您對於PHP開發工具的現狀滿意么?
鍾勝輝:這是一個見仁見智的問題,我個人認為,一個優秀的框架能在很大程度上提高工作效率,尤其是對大中型項目。當然如果對項目有足夠的把控能力,框架也並非是必須的,畢竟PHP的框架跟ROR的情況有所不同,多而混亂,而學習一個框架是需要時間的。像你的問題中提到的,很多老的PHP程序員對框架不屑一顧,認為自己對項目有足夠的把控能力,不需要框架這么累贅的東西,然而從長遠來看,一個優秀的框架可以延長一個項目的壽命,降低維護和二次開發的成本。我們目前正在開發中的CMSTOP,是一個產品型項目,在這樣的項目中,沒有一個優秀的框架是很難想像的。在研究對比了目前主流的PHP框架之後,我們發現沒有哪個框架能完全適合一個CMS的項目,於是我們決定自己開發一個框架。目前這個框架極大地提高了我們的工作效率,而且,我們會在適當的時候將這個框架開源。
記者:PHP的面向對象設計的並不是很好。很多在Java一類語言裡面可以很好應用的面向對象寫法在PHP裡面實現起來卻很繁瑣。您認為面向對象對於PHP這樣的Web開發語言來說重要麼?PHP的面向對象是否還能夠改進呢?
鍾勝輝:PHP的面向對象屬於歷史遺留問題,而且,說其不好,慢慢也會成為歷史問題。從PHP5相對PHP4的進步,我們有理由去期待PHP6給我們帶來更多的驚喜。不論對什麼樣的語言,面向對象更多的是一種思考問題的方法,沒有必要為了面向對象而去面向對象。PHP最初的面向對象,可以簡單地看作是函數的升級,曾經被很多其它語言的開發者取笑,但PHP5的面向對象已經足以滿足大部分WEB項目了。一門語言要想生存下去,就得去適應技術發展的潮流,並不斷做出調整,在這方面,PHP的團隊充滿了活力。
記者:PHP網站的安全是個很常見的問題,有關PHP網站漏洞的消息是很多的。您認為這其中的原因和PHP語言本身的特點有關么(相對於如PHP網站數量、PHP代碼編寫習慣等其他因素)?PHP的安全有改善的空間么?
鍾勝輝:網站的安全是一個比較系統的問題,它跟伺服器安全以及代碼的質量是直接相關的,我們並不能說PHP這門語言不安全。目前PHP有很多優秀的開源產品,例如discuz,phpcms等,即使在開源的情況下,這些產品也保證了足夠的安全性。PHP的門檻很低,一兩周的時間就可以入門,而這些「快速入門」的程序員,往往容易忽略代碼安全問題。安全問題的改善,取決於越來越多的PHP程序員對這個問題的重視程度。
記者:現在在不少大型項目中,PHP完全充當了腳本的功能,而邏輯性比較強的業務處理則由另一門功能豐富的語言(例如Java)來實現。您認為這樣在復雜度、開發快捷度、開發周期以及成本等方面有著怎樣的影響?
鍾勝輝:這種情況確實存在,但我認為之所以出現這種情況,並不是因為PHP「做不了」,而是很多項目負責人對PHP的偏見以及對JAVA等語言的迷信造成了這種現狀。當然,我們不能否認,有很多問題確實是PHP做不了的,做為一種解釋型的腳本語言,PHP本身就不適合做大型的數據運算,它也不可能成為一門「萬能語言」。在大型項目中,多種語言配合工作是一件很正常的事情,例如說,PHP負責收集數據,提供界面,C負責處理分析數據,Python來做粘劑。各種語言各司其職,協同合作,只是分工的不同而沒有高低貴之分,就像如果用C來做數據展示一樣會很痛苦。我不認為PHP往復雜計算方面發展是一件好事,而且我相信PHP的開發團隊也會把握好這個度。沒有哪種語言可以做到「萬能」,java有這樣的野心,但我們可以看到java現在的境遇似乎並不如PHP那麼紅火,如果PHP也追求「萬能」,那將是一場災難。
③ php是世界上最好的語言
PHP是世界上最好的語言。這是網路上廣泛流傳的一個梗,並不是說PHP就真的是編程最好的語言,其實每款編程語言都有自身的優勢以及所專長的領域,並不能簡單地說PHP就是最好的編程語言,這多少有點調侃的成分。
PHP優點
(一)流行,容易上手
PHP是目前最流行的編程語言,這毋庸置疑。它驅動全球超過2億多個網站,有全球超過81.7%的公共網站在伺服器端採用PHP。PHP常用的數據結構都內置了,使用起來方便簡單,也一點都不復雜,表達能力相當靈活。
(二)開發職位很多
在伺服器端的網站編程中PHP會更容易幫助你找到工作。很多互聯網相關企業都在使用PHP開發框架,所以可以說市場對PHP的開發程序員的需求還是比較大的。
(三)仍然在不斷發展
PHP在不斷兼容著類似closures和命名空間等技術,同時兼顧性能和當下流行的框架。版本是7之後,一直在提供更高性能的應用。
(四)可植入性強
PHP 語言在補丁漏洞升級過程中,核心部分植入簡單易行,且速度快。
(五)拓展性強
PHP 語言在資料庫應用過程中,可以從資料庫調取各類數據,執行效率高。
PHP缺點
(一)PHP的解釋運行機制
在 PHP 中,所有的變數都是頁面級的,無論是全局變數, 還是類的靜態成員,都會在頁面執行完畢後被清空。
(二)設計缺陷,缺少關注PHP被稱作是不透明的語言,因為沒有堆棧追蹤,各種脆弱的輸入。沒有一個明確的設計哲學。早期的PHP受到Perl的影響,帶有out參數的標准庫又是有C語言引入,面向對象的部分又是從C++和Java學來的。
(三)對遞歸的不良支持
PHP並不擅長遞歸。它能容忍的遞歸函數的數量限制和其他語言比起來明顯少。
這句話的產生,雖然帶有一定php碼農個人感情色彩的偏見,但是未嘗沒有道理。首先,PHP的使用率遠遠高於其他語言的使用率,在web開發中佔有很大份額。
同時PHP作為一種通用開源語言,因其語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛。具有簡單易懂的語法、沒有奇怪的黑魔法、既能面向過程,又能面向對象、安裝後各種擴展集一身、包括但不限於mysql、json、mbstr等,方便至極。
在這種情況下,PHP就被戲稱為「世上最好的語言」,當然它也不負眾望,成了大部分IT碼農的首選。它的門檻低,使得更多新手小白入門快,能快速了解IT這行,以及自己的工作性質。語法簡單,很快融入其中,被成為「弱類型語言」。
現在很多重量級的開源項目都會使用PHP語言,企業開發上也越來越支持使用PHP。它成熟的框架,大大縮短開發周期,在加上成本低,導致了市場需求大。
(3)phpror擴展閱讀
主要參考框架
(一)CodeIgniter的優點
1、配置簡單,全部的配置使用 PHP腳本來配置,執行效率高;具有基本的路由功能,能夠進行一定程度的路由;具有初步的Layout功能,能夠製作一定程度的界面外觀;資料庫層封裝的不錯,具有基本的MVC功能。
2、快速簡潔,代碼不多,執行性能高,PHP框架簡單, 容易上手,學習成本低,文檔詳細;自帶了很多簡單好用的library,框架適合小型應用。
(二)CodeIgniter 缺點
1、把Model層簡單的理解為資料庫操作。
2、PHP 框架略顯簡單,只能夠滿足小型應用,略微不太能夠滿足中型應用需要。
(三)CakePHP 的優點
1、CakePHP 是最類似於RoR的 PHP 框架,包括設計方式,資料庫操作的Active Record方式;設計層面很優雅,沒有自帶多餘的 library,所有的功能都是純粹的框架,執行效率還不錯;資料庫層的hasOne,hasMany 功能很強大,對於復雜業務處理比較合適;路由功能,配置功能還不錯;自動構建腳手架(scaffold)很強大;適合中型應用;基本實現過了MVC每一層; 具有自動操作命令行腳本功能。
2、文檔比較全,在國內推廣的比較成功,大部分人都知道CakePHP,學習成本中等。
(四)CakePHP 的缺點
1、CakePHP非常嚴重的問題是把Model理解為資料庫層操作,嚴重影響了除了資料庫之外的操作能力
2、CakePHP的cache功能略顯薄弱,配置功能稍嫌弱;CakePHP不適合大型應用,只適合中型應用,小型應用來說略微的學習成本高了點。
參考資料來源:網路-PHP
④ PHP中的各種框架
CodeIgniter、CakePHP、ZendFramework、Symfony這幾個是國外的,你可以參考下http://www.isstudy.com
CodeIgniter
優點:
1. 配置簡單,全部的配置使用PHP腳本來配置,執行效率高;具有基本的路由功能,能夠進行一定程度的路由;具有初步的Layout功能,能夠製作一定程度的界面外觀;資料庫層封裝的不錯,具有基本的MVC功能
2. 快速簡潔,代碼不多,執行性能高,框架簡單,容易上手,學習成本低,文檔詳細;自帶了很多簡單好用的library,框架適合小型應用
缺點:
1. 把Model層簡單的理解為資料庫操作
2. 框架略顯簡單,只能夠滿足小型應用,略微不太能夠滿足中型應用需要
評價:
總體來說,拿CodeIgniter來完成簡單快速的應用還是值得,同時能夠構造一定程度的layout,便於模板的復用,數據操作層來說封裝的不錯,並且CodeIgniter沒有使用很多太復雜的設計模式,執行性能和代碼可讀性上都不錯。至於附加的 library 也還不錯,簡潔高效。
CakePHP
優點:
1. CakePHP是最類似於RoR的框架,包括設計方式,資料庫操作的Active Record方式;設計層面很優雅,沒有自帶多餘的 library,所有的功能都是純粹的框架,執行效率還不錯;資料庫層的 hasOne, hasMany 功能很強大,對於復雜業務處理比較合適;路由功能,配置功能還不錯;自動構建腳手架(scaffold)很強大;適合中型應用;基本實現過了MVC每一層;具有自動操作命令行腳本功能;
2. 文檔比較全,在國內推廣的比較成功,大部分都知道CakePHP,學習成本中等
缺點:
1. CakePHP非常嚴重的問題是把Model理解為資料庫層操作,嚴重影響了除了資料庫之外的操作能力
2. CakePHP的cache功能略顯薄弱,配置功能稍嫌弱;CakePHP不適合大型應用,只適合中型應用,小型應用來說略微的學習成本高了點
評價:
總體來說CakePHP框架代表了PHP框架很重要的一個時代和代表,並且目前發揮著很重要的作用,不少自己寫的框架都模仿了CakePHP的方式,是個里程碑式的產品;CakePHP透露著RoR的敏捷開發方式和把資料庫操作認為是唯一Model的設計思想,作為開發快速應用和原型是絕好的工具;同樣,用來做Web2.0網站的開發框架,也是值得選擇的。
【 Zend Framework 】
優點:
1. 官方出品,自帶了非常多的 library,框架本身使用了很多設計模式來編寫,架構上很優雅,執行效率中等;MVC設計中,比較簡潔,具有路由功能,配置文件比較強大(能夠處理 XML和php INI),各種 library 很強大,是所有PHP框架中各種功能最全面的,包括它不僅是一個框架,更是一個大類庫(取代PEAR),這是它的主要特色;能夠直觀的支持除資料庫操作之外的Model層(比 CodeIgniter 和 CakePHP 強),並且能夠很輕易的使用Loader功能載入其他新增加的Class;Cache功能很強大,從前端Cache到後端Cache都支持,後端 Cache支持Memcache、APC、SQLite、文件等等方式;資料庫操作功能很強大,支持各種驅動(適配器)
2. 文檔很全,在國內社區很成熟,並且目前不少Web 2.0網站在使用,學習成本中等
缺點:
1. MVC功能完成比較弱,View層簡單實現(跟沒實現一樣),無法很強大的控制前端頁面
2. 沒有自動化腳本,創建一個應用,包括入口文件,全部必須自己手工構建,入門成本高
3. Zend Framework 作為一個中型應用框架問題不大,也能夠勉強作為大型應用的框架,但是作為一個很成熟的大型PHP框架來說,還需要一些努力
評價:
作為官方出品的框架,Zend Framework的野心是可以預見的,想把其他框架擠走,同時封裝很多強大的類庫,能夠提供一站式的框架服務,並且他們的開發團隊很強大,完全足夠有能力開發很強大的產品出來,所以基本可以確定的是Zend Framework前途無量,如果花費更多的時間去完善框架。同樣的,Zend Framework架構本身也是比較優雅的,說明Zend官方是有很多高手的,設計理念上比較先進,雖然有一些功能實現的不夠完善,比如View層,自動化腳本等等,這些都有賴於未來的升級。總體來說Zend Framework是最值得期待的框架,當然,你目前要投入你的項目中使用也是完全沒問題的。
【 Symfony 】
優點:
1. Symfony 是我了解的PHP框架中功能最強大的,而且我使用時間比較長,但是很多功能還是沒有挖掘出來;它完整實現了MVC三層,封裝了所有東西,包括 $_POST,$_GET 數據,異常處理,調試功能,數據檢測;包含強大的緩存功能,自動載入Class(這個功能很爽),強大的i18n國家化支持;具有很強大的view層操作,能夠零碎的包含單個多個文件;非常強大的配置功能,使用yml配置能夠控制所有框架和程序運行行為,強大到讓人無語;能夠很隨意的定義各種自己的 class,並且symfony能夠自動載入(auto load)這些class,能夠在程序中隨意調用;包含強大的多層級項目和應用管理:Project --> Application --> Mole --> Action,能夠滿足一個項目下多個應用的需要,並且每層可以定義自己的類庫,配置文件,layout;非常強大的命令行操作功能,包括建立項目、建立應用、建立模塊、刷新緩存等等;
2. Symfony絕對是開發大型復雜項目的首選,因為使用了Symfony,將大大節約開發成本,並且多人協作的時候,不會出現問題,在Project級別定義好基礎Class以後,任何模塊都能夠重用,大大復用代碼
缺點:
1. 資料庫操作model採用了重量級的propel和creole,不過在我測試的版本中已經把他們移到了addon里,可用可不用
2. 緩存功能無法控制,每次開發調試總是緩存,需要執行 symfony cc, symfony rc 來清除和重建緩存;
3. 效率不是很高,特別是解析模板和讀取配置文件的過程,花費時間不少;
4. 學習成本很高,並且國內沒有成熟的社區和文檔,連中文手冊都沒有,相應的要掌握所有功能,需要花費比較多的時間
評價:
Symfony絕對是企業級的框架,唯一能夠貌似能夠跟Java領域哪些強悍框架抗衡的東西;強悍的東西,自然學習復雜,但是相應的對項目開發也比較有幫助,自然是推薦復雜的項目使用Symfony來處理,覺得是值得,後期的維護成本比較低,復用性很強。相應的如果使用Symfony的應該都是比較復雜的互聯網項目,那麼相應的就要考慮關於資料庫分布的問題,那麼就需要拋棄Symfony自帶的資料庫操作層,需要自己定義,當然了,Symfony支持隨意的構造model層。
【 總評 】
以上數款框架,各有特色,而且都是開源項目,不過框架針對的項目不一樣,一般來說 CodeIngiter 比較適合小型項目,CakePHP 和 Zend Framework 比較適合中型項目,Symfony 比較適合大型重量級項目,在項目選型的時候,要充分考慮框架的可以定製性、擴展性,因為每個項目都無法確定你是否會隨著需求的變化進行改變。
相對來說,Zend Framework 和 Symfony 應對變化的能力比較強,特別是能夠隨意定製 model 層的Class,能夠非常方便增加自己業務或者數據處理類,我是個人比較推薦在中大型項目中使用的框架。CodeIngiter 和 CakePHP 在中小型項目中同樣能夠發揮重大作用,快速開發和原型構建,非常適合目標不清晰的原型項目的開發。了解一個框架最好的方式就是使用它,學習它最好的方式就是看視頻。
仁者見仁,智者見智,在項目挑選框架的時候,請先認真考察項目的需求和未來的變化,然後選擇合適的框架,讓項目開發速度和後期維護性得到一個合理的平衡,當然了,也許,自己寫一個框架更適合。
⑤ 國內用ROR框架做的著名web網站的是不是不多,是不是國內的ROR社區環境不太好我只知道豆瓣是用python寫的
因為Twitter, Github兩個知名網站的使用ror也逐漸的出名態並起來。國內的iteye就是RoR開發的,還有http://ruby-china.org/。但是在國內,Ruby是小眾語言,所以RoR的社區也不大。
每種技術的社區里,都有些佈道者,他們會經常寫一些文字,展現某種技術的優越。那樣做,並非是為了體現自己「拽」帆局跡,只是發表自己的見解而已,這種做法對社區和自己都是有益的。好的框架,都是集成了眾多「最佳實踐」的,把一些重復的工作自動化了,這是進步的體現。用RoR和Django,你可以敲幾句命令,就可以把一個網站的骨架搭起來,但是你想把這個骨架,開發成一個能解決實際問題,甚至能創造收益的產品,還是需要付出一番血和汗的。
至於「用 Ruby 做的成功商業網站少是什麼原因」,我找到了一個人的回答,我也比較贊同,現貼出來:
首先 Ruby(on Rails) 是後起之秀,所以「少」,是一個正常的現象。一個技術要成功,需要一定的時間來證明。
一個項目用成熟的技術如 Java 和 PHP 來做,碰到問題,可以較容易找到解決的方案,因為這方面別人早都碰過了,但用 Ruby 這樣的技術來做,就不一定。
另外還有一個整合問題,比如一些第三方類庫(比如支付),是用 Java 或 PHP 來做,用 Ruby 做的項目,不能夠直接集成它們。雖然這方面開發工作量不大,但仍讓一部分人生畏。
最後一個我認為較重要的因素就是:項目不採用 Ruby 來做,很多時候不是技術(比如技術太難或這樣的技術人員難臘灶找)的原因,更多是擔心責任和風險。
如果用 Java 或 PHP 這樣的技術來做項目,碰到問題或瓶頸,上級通常不會懷疑是開發語言選擇的問題,但如果是用 Ruby 來做,可能管理層第一時間就會懷疑你技術人員沒有選擇好技術,是該技術導致的問題,這時候責任人通常是有口難辯。
好幾年前那些用 Unix 的單位的技術主管寧願繼續選擇昂貴的 Unix,而不願意嘗試技術上已經成熟且更便宜的 Linux,一個重要原因就是怕出問題自己一身責任。當初的免費 Linux 跟現在開發效率更高的 Ruby(Rails),有點相似。
⑥ PHP中兩個小於號「<<」是什麼意思
PHP中兩個小於號「<<」表示的php中的位運算符,<<表示的是向左移動,>>表示的是向右移動,這個我們可以通過一個例子更加容易的來理解位運算:
<?php
//定義許可權
define('READ',1<<0);//把可讀許可權放在最右邊
define('WRITE',1<<1);//可讀許可權向左移一位
define('EXCUTE',1<<2);//可執行許可權向左移兩位
//賦予許可權
$user_permission=READ|WRITE;
//驗證許可權
echo'可讀:',($user_permission&READ)?'Yes':'No'," ";
echo'可寫:',($user_permission&WRITE)?'Yes':'No'," ";
echo'可執行:',($user_permission&EXCUTE)?'Yes':'No'," ";
?>
通過位運算,我們能更加方便的控制許可權。
⑦ php中獲取文本框的值
不刷新網頁就想得到網頁中本頁面文本框的內容?而且要用PHP實現?這是不可能的。
php如果想得到傳值,有get和post兩種,但這都需要基於向本頁面提交信息之前的那個頁面才可以完成,因為php從客戶端得到數據都是被動的,它不會從伺服器上主動向你客戶端獲取數據。這是php的特性。
如果你想實現你所說的功能,那隻能使用AJAX + PHP來實現,而且,你所說的<?php ...... ?>應該在另外一個頁面上,就是通過AJAX遞交信息的目標頁面中,然後再傳值回客戶端,通過javascript的innerHTML來動態更改頁面上的內容或顯示。
這個頁面的代碼很復雜,我只提供給你思路了,另外你最好詳細形容一下你要實現什麼效果。
⑧ 國外主流PHP框架對比評測
最近簡單的使用了目前在國內用的比較多的幾個主流國外PHP框架(不包括國內框架) 大致對這些框架有個直觀上的感受 簡單分享一下 對於哪些做框架選型的時候 權當一個參考
主要參考的框架包括 CodeIgniter CakePHP ZendFramework Symfony 我對很多框架也沒有認真使用 只是簡單試用了一下 可能很多看法不成熟或者是錯誤的 請大家指正 一起成長
CodeIgniter
優點
配置簡單 全部的配置使用PHP腳本來配置 執行效率高 具有基本的路由功能 能夠進行一定程度的路由 具有初步的Layout功能 能夠製作一定程度的界面外觀 資料庫層封裝的不錯 具有基本的MVC功能
快速簡潔 代碼不多 執行性能高 框架簡單 容易上手 學習成本低 文檔詳細 自帶了很多簡單好用的library 框架適合小型應用
缺點
把Model層簡單的理解為資料庫操作
框架略顯簡單 只能夠滿足小型應用 略微不太能夠滿足中型應用需要
評價
總體來說 拿CodeIgniter來完成簡單快速的應用還是值得 同時能夠構造一定程度的layout 便於模板的復用 數據操作層來說封裝的不錯 並且CodeIgniter沒有使用很多太復雜的設計模式 執行性能和代碼可讀性上都不錯 至於附加的 library 也還不錯 簡潔高效
CakePHP
優點
CakePHP是最類似於RoR的框架 包括設計方式 資料庫操作的Active Record方式 設計層面很優雅 沒有自帶多餘的 library 所有的功能都是純粹的框架 執行效率還不錯 資料庫層的 hasOne hasMany 功能很強大 對於復雜業務處理比較合適 路由功能 配置功能還不錯 自動構建腳手架(scaffold)很強大 適合中型應用 基本實現過了MVC每一層 具有自動操作命令行腳本功能
文檔比較全 在國內推廣的比較成功 大部分都知道CakePHP 學習成本中等
缺點
CakePHP非常嚴重的問題是把Model理解為資料庫層操作 嚴重影響了除了資料庫之外的操作能力
CakePHP的cache功能略顯薄弱 配置功能稍嫌弱 CakePHP不適合大型應用 只適合中型應用 小型應用來說略微的學習成本高了點
評價
總體來說CakePHP框架代表了PHP框架很重要的一個時代和代表 並且目前發揮著很重要的作用 不少自己寫的框架都模仿了CakePHP的方式 是個里程碑式的產品 CakePHP透露著RoR的敏捷開發方式和把資料庫操作認為是唯一Model的設計思想 作為開發快速應用和原型是絕好的工具 同樣 用來做Web 網站的開發框架 也是值得選擇的
Zend Framework
優點
官方出品 自帶了非常多的 library 框架本身使用了很多設計模式來編寫 架構上很優雅 執行效率中等 MVC設計中 比較簡潔 具有路由功能 配置文件比較強大(能夠處理XML和php INI) 各種 library 很強大 是所有PHP框架中各種功能最全面的 包括它不僅是一個框架 更是一個大類庫(取代PEAR) 這是它的主要特色 能夠直觀的支持除資料庫操作之外的Model層(比 CodeIgniter 和 CakePHP 強) 並且能夠很輕易的使用Loader功能載入其他新增加的Class Cache功能很強大 從前端Cache到後端Cache都支持 後端Cache支持Memcache APC SQLite 文件等等方式 資料庫操作功能很強大 支持各種驅動(適配器)
文檔很全 在國內社區很成熟 並且目前不少Web 網站在使用 學習成本中等
缺點
MVC功能完成比較弱 View層簡單實現(跟沒實現一樣) 無法很強大的控制前端頁面
沒有自動化腳本 創建一個應用 包括入口文件 全部必須自己手工構建 入門成本高
Zend Framework 作為一個中型應用框架問題不大 也能夠勉強作為大型應用的框架 但是作為一個很成熟的大型PHP框架來說 還需要一些努力
評價
作為官方出品的框架 Zend Framework的野心是可以預見的 想把其他框架擠走 同時封裝很多強大的類庫 能夠提供一站式的框架服務 並且他們的開發團隊很強大 完全足夠有能力開發很強大的產品出來 所以基本可以確定的是Zend Framework前途無量 如果花費更多的時間去完善框架 同樣的 Zend Framework架構本身也是比較優雅的 說明Zend官方是有很多高手的 設計理念上比較先進 雖然有一些功能實現的不夠完善 比如View層 自動化腳本等等 這些都有賴於未來的升級 總體來說Zend Framework是最值得期待的框架 當然 你目前要投入你的項目中使用也是完全沒問題的
Symfony
優點
Symfony 是我了解的PHP框架中功能最強大的 而且我使用時間比較長 但是很多功能還是沒有挖掘出來 它完整實現了MVC三層 封裝了所有東西 包括 $_POST $_GET 數據 異常處理 調試功能 數據檢測 包含強大的緩存功能 自動載入Class(這個功能很爽) 強大的i n國家化支持 具有很強大的view層操作 能夠零碎的包含單個多個文件 非常強大的配置功能 使用yml配置能夠控制所有框架和程序運行行為 強大到讓人無語 能夠很隨意的定義各種自己的class 並且symfony能夠自動載入(auto load)這些class 能夠在程序中隨意調用 包含強大的多層級項目和應用管理 Project > Application > Mole > Action 能夠滿足一個項目下多個應用的需要 並且每層可以定義自己的類庫 配置文件 layout 非常強大的命令行操作功能 包括建立項目 建立應用 建立模塊 刷新緩存等等
Symfony絕對是開發大型復雜項目的首選 因為使用了Symfony 將大大節約開發成本 並且多人協作的時候 不會出現問題 在Project級別定義好基礎Class以後 任何模塊都能夠重用 大大復用代碼
缺點
資料庫操作model採用了重量級的propel和creole 不過在我測試的版本中已經把他們移到了addon里 可用可不用
緩存功能無法控制 每次開發調試總是緩存 需要執行 symfony cc symfony rc 來清除和重建緩存
效率不是很高 特別是解析模板和讀取配置文件的過程 花費時間不少
學習成本很高 並且國內沒有成熟的社區和文檔 連中文手冊都沒有 相應的要掌握所有功能 需要花費比較多的時間
評價
Symfony絕對是企業級的框架 唯一能夠貌似能夠跟Java領域哪些強悍框架抗衡的東西 強悍的東西 自然學習復雜 但是相應的對項目開發也比較有幫助 自然是推薦復雜的項目使用Symfony來處理 覺得是值得 後期的維護成本比較低 復用性很強 相應的如果使用Symfony的應該都是比較復雜的互聯網項目 那麼相應的就要考慮關於資料庫分布的問題 那麼就需要拋棄Symfony自帶的資料庫操作層 需要自己定義 當然了 Symfony支持隨意的構造model層
總結
以上數款框架 各有特色 而且都是開源項目 不過框架針對的項目不一樣 一般來說 CodeIngiter 比較適合小型項目 CakePHP 和 Zend Framework 比較適合中型項目 Symfony 比較適合大型重量級項目 在項目選型的時候 要充分考慮框架的可以定製性 擴展性 因為每個項目都無法確定你是否會隨著需求的變化進行改變
相對來說 Zend Framework 和 Symfony 應對變化的能力比較強 特別是能夠隨意定製 model 層的Class 能夠非常方便增加自己業務或者數據處理類 我是個人比較推薦在中大型項目中使用的框架
CodeIngiter 和 CakePHP 在中小型項目中同樣能夠發揮重大作用 快速開發和原型構建 非常適合目標不清晰的原型項目的開發
當然了 也許 自己寫一個框架更適合
lishixin/Article/program/PHP/201311/21441