有人認爲,PHP是每次請求都要初始化資源,這個開銷很是大。由此,PHP不適合使用開發框架。 html
對於PHP,確實沒有類的持久化,使得每次請求都要初始化資源,可是,這並非開銷的主要問題所在。最主要的問題,是在於開發PHP框架的人,對PHP自己的特性瞭解多少。最簡單的,MVC須要檢測UA,若是使用PHP自帶的get_browser函數,那確定是死定了。由於,使用上的方便與簡單,致使的是性能的開銷。 web
認爲不可以使用PHP開發框架的,還有的觀點是:因爲須要每次請求的時候初始化整個框架。其實,這也是一種誤解。若是好好看看PHP源碼,就會了解,PHP是按請求加載須要運行的文件,並非整個框架。因此,對於框架自己,哪種框架內核代碼時越小,性能越好。 算法
還有觀點:因爲PHP這種每請求初始化資源的機制,也形成了PHP添加跨請求的高級特性至關困難。其實,跨請求自己,要看在哪個層面。PHP提供了各種加速的緩存機制。雖然PHP的類是因爲目前序列化函數仍有限制,不能持久化,但數據緩存對PHP的加速是至關快的。因此,認爲因爲這一限制,就使得PHP只能是一個保持在一個比較簡單的web語言上面,這無疑更是錯誤的。PHP不乏大型的高速與高效的網站。並非這些網站底層就沒有框架。 數據庫
另外,還有輕信什麼測試的結果。http://merbist.com/wp-content/uploads/2008/11/benchmarks.png,對於這個測試結果,我以爲,沒有一絲一毫的可信度。咱們沒法相信這些測試結果,主要緣由有這麼幾個方面。其一,PHP環境配置,是否是最優化配置?第二,測試結果中所選框架,是否是最優框架?僅拿CI與CAKE二者來講,CI的日誌,沒有多種輸出,只有文件輸出。這對於大型網站的管理是極不方便的。可是,若是將其改用LOG4PHP,那性能上的損失將會是多少,是不可想象的。緣由在於,LOG4PHP是徹底照抄的JAVA。至於CAKE,更是徹底照抄RAILS。徹底不顧及PHP的性能與語言自己的特性。 緩存
好比最簡單的,大量靜態方法的使用。勢必形成以空間換時間。CAKE中無處不在的靜態方法,致使了內存中堆積大量的類。這種以空間換時間,是速度加快了,仍是性能損失了,有多少人真正系統測試過? 架構
CAKE讓RUBY的人瞭解PHP是對PHP的一個促進,同時,RAILS框架,也使得PHP框架得以注入新的血液,增長了新的開發思路。但,徹底照抄是PHP目前最大的悲劇。這個當中的經典之做:CAKE:RUBY ON RAILS, SMARTY: JAVA STRRUTS LOG4PHP:JAVA LOG4J,可悲的是,寫這些抄襲之做的做者,都是對PHP不太瞭解,大量照搬RUBY,JAVA中的算法與函數,有些能夠算是翻譯,好比, LOG4PHP中的PROPERTIIES文件的處理就是這樣,沒必要再舉更多的實例了。爲何不能把JSF,或TYPESTRY也抄到PHP中,這是由於,若是沒有很好的PHP功底,這幾乎是不可能的。由於,這兩個東西,若是也是照抄過來,勢必慢如蝸牛。 框架
再有,夢想不用PHP框架開發大型網站,確定是錯上加錯。WORDPRESS,DISCUZ這類無框架,無架構的極端糟糕的代碼,網上已家常便飯。 函數
要訪問數據庫,最小的需求,也要把數據庫訪問封裝成一個類吧?要進行錯誤與異常管理,也須要一個類吧?若是是大型的網站,總要有錯誤日誌輸出,以方便調視與運行監視吧。因此這些,拼一下,也算是PHP開發框架呀。 性能
看樣子,否定PHP應當有框架的人,確定也就認定,PHP作不了大網站。或者說,認定,PHP作大網站,也是垃圾架構。這多是太武斷了。 測試
凡認爲PHP是反框架的,實際上,是不瞭解PHP語言的一些瓶頸在何處,沒法寫出高效的框架,因此,才這樣認爲的。