• <menu id="w2i4a"></menu>
  • logo PHP框架/PHP IDE系列

    文檔首頁(yè)>>PHP框架/PHP IDE系列>>談?wù)劥蠹覍?duì)PHP框架的各種誤解

    談?wù)劥蠹覍?duì)PHP框架的各種誤解


    有人認(rèn)為,PHP是每次請(qǐng)求都要初始化資源,這個(gè)開銷非常大。由此,PHP不適合使用開發(fā)框架。 

    對(duì)于PHP,確實(shí)沒有類的持久化,使得每次請(qǐng)求都要初始化資源,但是,這并不是開銷的主要問題所在。最主要的問題,是在于開發(fā)PHP框架的人,對(duì)PHP本身的特性了解多少。最簡(jiǎn)單的,MVC需要檢測(cè)UA,如果使用PHP自帶的get_browser函數(shù),那肯定是死定了。因?yàn)椋褂蒙系姆奖闩c簡(jiǎn)單,導(dǎo)致的是性能的開銷。 

    認(rèn)為不可使用PHP開發(fā)框架的,還有的觀點(diǎn)是:由于需要每次請(qǐng)求的時(shí)候初始化整個(gè)框架。其實(shí),這也是一種誤解。如果好好看看PHP源碼,就會(huì)了解,PHP是按請(qǐng)求加載需要運(yùn)行的文件,并不是整個(gè)框架。所以,對(duì)于框架本身,哪一種框架內(nèi)核代碼時(shí)越小,性能越好。 

    還有觀點(diǎn):由于PHP這種每請(qǐng)求初始化資源的機(jī)制,也造成了PHP添加跨請(qǐng)求的高級(jí)特性相當(dāng)困難。其實(shí),跨請(qǐng)求本身,要看在哪一個(gè)層面。PHP提供了各類加速的緩存機(jī)制。雖然PHP的類是由于目前序列化函數(shù)仍有限制,不能持久化,但數(shù)據(jù)緩存對(duì)PHP的加速是相當(dāng)快的。所以,認(rèn)為由于這一限制,就使得PHP只能是一個(gè)保持在一個(gè)比較簡(jiǎn)單的web語(yǔ)言上面,這無疑更是錯(cuò)誤的。PHP不乏大型的高速與高效的網(wǎng)站。并不是這些網(wǎng)站底層就沒有框架。 

    另外,還有輕信什么測(cè)試的結(jié)果。http://merbist.com/wp-content/uploads/2008/11/benchmarks.png,對(duì)于這個(gè)測(cè)試結(jié)果,我覺得,沒有一絲一毫的可信度。我們無法相信這些測(cè)試結(jié)果,主要原因有這么幾個(gè)方面。其一,PHP環(huán)境配置,是不是最優(yōu)化配置?第二,測(cè)試結(jié)果中所選框架,是不是最優(yōu)框架??jī)H拿CI與CAKE兩者來說,CI的日志,沒有多種輸出,只有文件輸出。這對(duì)于大型網(wǎng)站的管理是極不方便的。但是,如果將其改用LOG4PHP,那性能上的損失將會(huì)是多少,是不可想象的。原因在于,LOG4PHP是完全照抄的JAVA。至于CAKE,更是完全照抄RAILS。完全不顧及PHP的性能與語(yǔ)言本身的特性。 

    比如最簡(jiǎn)單的,大量靜態(tài)方法的使用。勢(shì)必造成以空間換時(shí)間。CAKE中無處不在的靜態(tài)方法,導(dǎo)致了內(nèi)存中堆積大量的類。這種以空間換時(shí)間,是速度加快了,還是性能損失了,有多少人真正系統(tǒng)測(cè)試過? 

    CAKE讓RUBY的人了解PHP是對(duì)PHP的一個(gè)促進(jìn),同時(shí),RAILS框架,也使得PHP框架得以注入新的血液,增加了新的開發(fā)思路。但,完全照抄是PHP目前最大的悲劇。這個(gè)當(dāng)中的經(jīng)典之作:CAKE:RUBY ON RAILS, SMARTY: JAVA STRRUTS  LOG4PHP:JAVA LOG4J,可悲的是,寫這些抄襲之作的作者,都是對(duì)PHP不太了解,大量照搬RUBY,JAVA中的算法與函數(shù),有些可以算是翻譯,比如, LOG4PHP中的PROPERTIIES文件的處理就是這樣,不必再舉更多的實(shí)例了。為什么不能把JSF,或TYPESTRY也抄到PHP中,這是因?yàn)?,如果沒有很好的PHP功底,這幾乎是不可能的。因?yàn)?,這兩個(gè)東西,如果也是照抄過來,勢(shì)必慢如蝸牛。 

    再有,夢(mèng)想不用PHP框架開發(fā)大型網(wǎng)站,肯定是錯(cuò)上加錯(cuò)。WORDPRESS,DISCUZ這類無框架,無架構(gòu)的極端糟糕的代碼,網(wǎng)上已屢見不鮮。 

    要訪問數(shù)據(jù)庫(kù),最小的需求,也要把數(shù)據(jù)庫(kù)訪問封裝成一個(gè)類吧?要進(jìn)行錯(cuò)誤與異常管理,也需要一個(gè)類吧?如果是大型的網(wǎng)站,總要有錯(cuò)誤日志輸出,以方便調(diào)視與運(yùn)行監(jiān)視吧。所以這些,拼一下,也算是PHP開發(fā)框架呀。 

    看樣子,否認(rèn)PHP應(yīng)當(dāng)有框架的人,肯定也就認(rèn)定,PHP做不了大網(wǎng)站。或者說,認(rèn)定,PHP做大網(wǎng)站,也是垃圾架構(gòu)。這可能是太武斷了。 

    凡認(rèn)為PHP是反框架的,實(shí)際上,是不了解PHP語(yǔ)言的一些瓶頸在何處,無法寫出高效的框架,所以,才這樣認(rèn)為的。 

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();