為什麼說PHP是首選的Web開發語言?
2016.01.08 22:59:56
不知何時開始,程式員把一致的調侃送給了PHP,“尊稱”其為“神語言”,並且PHP總被冠以“代碼淩亂”、“漏洞不少”的不良名稱。在我所接觸的Web開發技術如:Rails、 ASP.NET MVC、Java Web、Django、Sinatra以及PHP中,PHP應該是首選Web開發語言。 請注意,這裡的“首選”不是“最好”的意思,而是開發工具棧學習選型過程應該優先考慮的技術。
為什麼這麼說呢?理由一下子在腦袋裡冒出了好多條,姑且梳理下吧:
- PHP是為Web而生的,天然與HTML、JavaScript有親近感,也就是原生味兒十足。即使是PHP與HTML代碼混雜,從某種角度而言,也能協助初學者直觀地瞭解Web技術機理,壞事有時候也是好事。另一方面,開源PHP的C風格、Unix/Linux範兒讓其在Apache、Nginx等Web應用伺服器上表現優異。 總之,PHP與Web是渾然天成的結合方式。
-
要掌握PHP,我建議從備受詬病的“代碼淩亂”編程風格 -- 或許是從PHP與HTML混合編程開始,待直觀瞭解Web開發技術之後,再考慮程式碼群組織和結構的重構,這樣有助於自己以更加原生的方式掌握Web的秘密。那麼,什麼是更加原生的方式呢?隨手舉個例子:典型的404狀態代碼。
用PHP的實現:
404.php
404.html
404頁面。
再看看如 ASP.NET MVC中的實現:
public ActionResult Details(int id){ return HttpNotFound();} 雖然封裝得很好,但是,跟PHP方式比較就知道, ASP.NET MVC中的實現確實比較抽象不夠直觀,而且是在控制器裡直接定義和跳轉的。 在PHP中,顯而易見,一下就明白了代碼中header的含義:HTTP-Version、Status-Code、Reason-Phrase。
順帶說說Rails中的處理方式,抽象程度也很高:
render :template => '......', :status => 404
-
與PHP類似的還有JSP,但JSP往往需要與JEE其他技術模組相配合使用,體系足夠龐大,需要有長期準備。其他如 ASP.NET MVC、Rails等架構的抽象度較高,也不建議作為首選。
-
不得不提Node.js,Node.js是目前很火的技術,號稱“全棧”的希望所在,常拿來跟PHP爭論比較:什麼並發、線程、進程等等。在這裡無意評論孰優孰劣,但至少PHP可以讓你多掌握一門技術,而不止是JavaScript。此外,PHP的大型業務的成熟應用案例可是比比皆是吖。
-
那麼,是不是該一直堅持指哪打哪的“代碼淩亂”方式呢?當然不應該。PHP提供的OOP特性足夠強大,在技能與理解程度達到一定高度時,完全可以以OOP的方式來組織代碼。在PHP領域,各種架構非常多,比如Laravel、CI、FuelPHP、Yii、Symfony、Zend Framework等等,屆時隨便選一個都可以進行正常化開發。 “代碼淩亂”關鍵不在於工具本身,而在於人自己!要知道用Java也能寫出爛代碼。
-
PHP的資料非常豐富。
-
最後,有一個稍稍題外話的看法,早前我還覺得在RESTful方式不斷普及下,由於RESTful Web Services使用標準的 HTTP 方法(GET/PUT/POST/DELETE)來抽象Web服務能力,服務端的重點將移至MC,而服務端視圖模版的應用會減少,用戶端的支撐需求會越來越多。比如各種前端庫、架構將得到快速推進,越來越多的需求處理會前置到前端來處理。但現在我感覺這種狀態考慮得太過理想了,就像資料頻繁大量更迭及處理的情境,更適合服務端(如模版引擎)完成;再具體地,又如大資料量的分頁,如果都在瀏覽器中實現,效能就一定會有很大問題。此外,頻繁Ajax調用、用戶端緩衝機制的缺失,也將引起種種問題,再進一步來看,單頁面應用(SPA)也就並非適合每一個業務情境, 服務端視圖模版還是有比較多的適用領域的。