為什么非PHP界的開(kāi)發(fā)人員普遍輕視PHP和PHP相關(guān)社區。他提出了一個(gè)觀(guān)點(diǎn)讓我印象很深,很大程度上是因為以前從來(lái)沒(méi)有聽(tīng)到過(guò)這樣的說(shuō)法。
如果你不知道大多數的程序員都會(huì )對PHP發(fā)什么樣的牢騷,那么,這些牢騷差不多會(huì )像這樣:
語(yǔ)法丑陋?
缺乏其它語(yǔ)言都有的一些必要的特征(在5.3版本之前,沒(méi)有命名空間,閉包)
不一致的函數命名、使用慣例,以及其它一些怪異的東西
過(guò)程和面向對象的雜混
基本上80-90%的PHP項目都爛如一堆狗屎
但他所說(shuō)的PHP的問(wèn)題卻是另外一個(gè)問(wèn)題。他并沒(méi)有說(shuō)這種語(yǔ)言有問(wèn)題——他認為這種語(yǔ)言被一種常見(jiàn)的文化現象包圍著(zhù),是一種通常由語(yǔ)言的創(chuàng )造者造就的文化傳統,現在看來(lái)這對一些糟糕的編程實(shí)踐方法起到了鼓勵作用。也就是它使PHP代碼變的劣質(zhì)和不可維護。
這種一個(gè)語(yǔ)言或框架上體現出創(chuàng )始人的哲學(xué)思想并被相關(guān)社區推崇的現象是的確存在的。他拿出來(lái)Ruby和其創(chuàng )始人Matz作為例子。Matz想要的是一種易讀易寫(xiě)、能提高程序員工作效率的語(yǔ)言。沒(méi)看見(jiàn)Ruby開(kāi)發(fā)人員們言之必稱(chēng)快速開(kāi)發(fā)以及這種語(yǔ)言的優(yōu)雅?
接著(zhù)就是DHH 和他的Rails框架。還有Guido和他的Python語(yǔ)言。于是我在想:Rasmus對于PHP呢?
Rasmus Lerdorf給人的印象非常的有趣。他創(chuàng )建了最初版的PHP語(yǔ)言,而且一直在改進(jìn)這種語(yǔ)言,他在PHP社區里被當作神一樣崇拜,他在PHP的任何方面都享有最大的權威。他被眾多的會(huì )議邀請去做演講,同時(shí)被大網(wǎng)絡(luò )公司(yahoo.com)所雇用,他獲得了所有人的尊敬——盡管有這樣一種事實(shí):他成了大多數的非PHP程序員所鄙視的PHP上的眾多問(wèn)題的形象代表。
Rasmus倡導避免使用框架,而把PHP更多的當作一種模板語(yǔ)言。對他來(lái)說(shuō),這種做法能產(chǎn)生直接的運行效率和可擴展性(程序負載可知)。而對于其他的所有人來(lái)說(shuō),這種做法導致了大量的亂燉似的過(guò)程式代碼,大量的無(wú)法維護的項目。自從1995年P(guān)HP誕生至今大概10年左右的時(shí)間里,所有的PHP項目都是按照這種指導寫(xiě)成的。
與此同時(shí)另外一個(gè)問(wèn)題突然的出現了:在PHP5.0之前,PHP的初期,PHP獲得了大量的新手的追隨。這種語(yǔ)言的入門(mén)門(mén)檻出奇的低,任何人都可以下載自解壓的×AMP Windows程序安裝包、在2兩分鐘內用上這種語(yǔ)言。除此之外,那時(shí)在Web開(kāi)發(fā)方式上對MVC模式的共識并沒(méi)有真正的出現。這樣一來(lái)你可以想象,一群新手和一個(gè)缺乏好的開(kāi)發(fā)實(shí)踐方法的語(yǔ)言組合到一起能創(chuàng )造出什么?一堆無(wú)法維護的垃圾。而且整個(gè)大環(huán)境都是這樣。
不要誤解我的話(huà)——優(yōu)秀的PHP開(kāi)發(fā)者還是不少的,即使是當時(shí)。但是,就像我說(shuō)的,粗制濫造的菜鳥(niǎo)作品到處都是。當牛仔式無(wú)羈的PHP程序員在沒(méi)有指導原則的情況下聚集到一起開(kāi)發(fā)程序,于是像PHPbb、 PHPNuke以及很多的粗糙的.php3程序包就出現了。但是你能單純的責怪PHP開(kāi)發(fā)人員嗎?不能!其它的Web語(yǔ)言巨人,ASP和Perl,同樣惡名遠揚,同樣宣傳著(zhù)一種亂燉式的開(kāi)發(fā)方式。
所以這就是為什么PHP會(huì )得到這樣的罵名。是因為它的歷史流傳。大多數已經(jīng)轉向Python,Ruby和Java的PHP開(kāi)發(fā)人員并沒(méi)有在MVC概念興起時(shí)回頭去重新思考這種語(yǔ)言。此外,更有一些像”Ruby公子“Zed Shaw抱怨一些程序員的思想”受PHP毒害“這樣的露骨的諷刺,像這樣的言論在RubyInside上很盛行。
PHP是個(gè)集中營(yíng)
但像Zend和CodeIgniter這樣的框架的出現把這種語(yǔ)言推向了正確的開(kāi)發(fā)方向上。事實(shí)上,它把PHP推向了與Rasmus所希望看到的相反的方向上了。查看一下Zend和CodeIgniter框架,你會(huì )發(fā)現它們是為數不多的文檔寫(xiě)的很好,代碼寫(xiě)的很好的程序。
大多數學(xué)習了Ruby的開(kāi)發(fā)人員同時(shí)都要學(xué)習Rails和MVC知識;PHP在此之前已經(jīng)被使用了整整10年。對于那些新手來(lái)說(shuō),可惡的Ruby沒(méi)有給他們這段時(shí)間讓他們自由發(fā)揮。Rails有現成的標準指導,它的入門(mén)門(mén)檻相對高很多,通常會(huì )把一些缺少經(jīng)驗的開(kāi)發(fā)人員擋在門(mén)外。
事實(shí)上,PHP應用程序是可以向其它種語(yǔ)言那樣寫(xiě)的很好,而且還會(huì )具有一定的運行速度上的優(yōu)勢。PHP世界里的MVC風(fēng)格的開(kāi)發(fā)方法興起只是在近幾年才出現的現象。不得不承認,我們應該感謝Rails帶來(lái)的這種變化。
那么,PHP如今是個(gè)什么樣呢?
各種標準(非統一,但大多數項目使用MVC,很少有垃圾般的過(guò)程式程序)
很低的入門(mén)門(mén)檻
速度和可擴展性(在各種腳本語(yǔ)言里PHP應該是最好的)
有一個(gè)好的單元測試框架
有最好的各國語(yǔ)言翻譯的文檔
除此之外,互聯(lián)網(wǎng)上大多數有影響的網(wǎng)站都使用PHP作為它們后臺的語(yǔ)言或工具,諸如Facebook,Digg,維基百科,Wordpress,Drupal等等。我相信,對PHP有一個(gè)深入的掌握會(huì )使一個(gè)程序員打開(kāi)更多的未知領(lǐng)域的大門(mén)。
如果你不贊同上面所說(shuō)的,請留下評論,或email給我——我想聽(tīng)聽(tīng)你為什么不這么認為。
事實(shí)上,我并不是一個(gè)PHP迷,我對語(yǔ)言沒(méi)有感覺(jué)。我使用PHP大多是因為——你猜到了——有人愿意付錢(qián)給我。所以一切歸咎于此:
如果你希望在軟件設計上做出明智的決定,PHP是你開(kāi)發(fā)Web應用程序的最佳選擇。
順便說(shuō)一下,如果你確信要使用PHP來(lái)開(kāi)發(fā)下一個(gè)Web應用,請試一試CodeIgniter。它是一個(gè)輕量級的,普通的,超級快的PHP框架。對于CodeIgniter,我是個(gè)粉絲。
Copyright@ 2011-2016 版權所有:大連千億科技有限公司 遼ICP備11013762-3號 google網(wǎng)站地圖 百度網(wǎng)站地圖 網(wǎng)站地圖
公司地址:大連市沙河口區中山路692號辰熙星海國際2317 客服電話(huà):0411-39943997 QQ:2088827823 37482752
法律聲明:未經(jīng)許可,任何模仿本站模板、轉載本站內容等行為者,本站保留追究其法律責任的權利! 隱私權政策聲明