不知何時(shí)開始,程序員把一致的調(diào)侃送給了PHP,“尊稱”其為“神語言”,并且PHP總被冠以“代碼凌亂”、“漏洞不少”的不良名稱。在我所接觸的Web開發(fā)技術(shù)如:Rails、ASP.NET MVC、Java Web、Django、Sinatra以及PHP中,PHP應(yīng)該是首選Web開發(fā)語言。請(qǐng)注意,這里的“首選”不是“最好”的意思,而是開發(fā)工具棧學(xué)習(xí)選型過程應(yīng)該優(yōu)先考慮的技術(shù)。
為什么這么說呢?理由一下子在腦袋里冒出了好多條,姑且梳理下吧:
-
PHP是為Web而生的,天然與HTML、JavaScript有親近感,也就是原生味兒十足。即使是PHP與HTML代碼混雜,從某種角度而言,也能幫助初學(xué)者直觀地了解Web技術(shù)機(jī)理,壞事有時(shí)候也是好事。另一方面,開源PHP的C風(fēng)格、Unix/Linux范兒讓其在Apache、Nginx等Web應(yīng)用服務(wù)器上表現(xiàn)優(yōu)異。總之,PHP與Web是渾然天成的結(jié)合方式。
-
要掌握PHP,我建議從備受詬病的“代碼凌亂”編程風(fēng)格 -- 或許是從PHP與HTML混合編程開始,待直觀了解Web開發(fā)技術(shù)之后,再考慮代碼組織和結(jié)構(gòu)的重構(gòu),這樣有助于自己以更加原生的方式掌握Web的秘密。那么,什么是更加原生的方式呢?隨手舉個(gè)例子:典型的404狀態(tài)碼。
用PHP的實(shí)現(xiàn):
404.php
<?phpheader("HTTP/1.1 404 Not Found");include("404.html");exit;?>404.html
<!DOCTYPE html><html lang="zh-CN"><head> <meta charset="utf-8"></head><body> <p>404頁面。</p></body></html>
再看看如 ASP.NET MVC中的實(shí)現(xiàn):
public ActionResult Details(int id){ return HttpNotFound(); }雖然封裝得很好,但是,跟PHP方式比較就知道,ASP.NET MVC中的實(shí)現(xiàn)確實(shí)比較抽象不夠直觀,而且是在控制器里直接定義和跳轉(zhuǎn)的。在PHP中,顯而易見,一下就明白了代碼中header的含義:HTTP-Version、Status-Code、Reason-Phrase。
順帶說說Rails中的處理方式,抽象程度也很高:
render :template => '......', :status => 404 -
與PHP類似的還有JSP,但JSP往往需要與JEE其他技術(shù)模塊相配合使用,體系足夠龐大,需要有長期準(zhǔn)備。其他如 ASP.NET MVC、Rails等框架的抽象度較高,也不建議作為首選。
-
不得不提Node.js,Node.js是目前很火的技術(shù),號(hào)稱“全?!钡南M?,常拿來跟PHP爭論比較:什么并發(fā)、線程、進(jìn)程等等。在這里無意評(píng)論孰優(yōu)孰劣,但至少PHP可以讓你多掌握一門技術(shù),而不止是JavaScript。此外,PHP的大型業(yè)務(wù)的成熟應(yīng)用案例可是比比皆是吖。
-
那么,是不是該一直堅(jiān)持指哪打哪的“代碼凌亂”方式呢?當(dāng)然不應(yīng)該。PHP提供的OOP特性足夠強(qiáng)大,在技能與理解程度達(dá)到一定高度時(shí),完全可以以O(shè)OP的方式來組織代碼。在PHP領(lǐng)域,各種框架非常多,比如Laravel、CI、FuelPHP、Yii、Symfony、Zend Framework等等,屆時(shí)隨便選一個(gè)都可以進(jìn)行規(guī)范化開發(fā)。“代碼凌亂”關(guān)鍵不在于工具本身,而在于人自己!要知道用Java也能寫出爛代碼。
-
PHP的資料非常豐富。
-
最后,有一個(gè)稍稍題外話的看法,早前我還覺得在RESTful方式不斷普及下,由于RESTful Web Services使用標(biāo)準(zhǔn)的 HTTP 方法(GET/PUT/POST/DELETE)來抽象Web服務(wù)能力,服務(wù)端的重點(diǎn)將移至MC,而服務(wù)端視圖模版的應(yīng)用會(huì)減少,客戶端的支撐需求會(huì)越來越多。比如各種前端庫、框架將得到快速推進(jìn),越來越多的需求處理會(huì)前置到前端來處理。但現(xiàn)在我感覺這種狀態(tài)考慮得太過理想了,就像數(shù)據(jù)頻繁大量更迭及處理的場(chǎng)景,更適合服務(wù)端(如模版引擎)完成;再具體地,又如大數(shù)據(jù)量的分頁,如果都在瀏覽器中實(shí)現(xiàn),性能就一定會(huì)有很大問題。此外,頻繁Ajax調(diào)用、客戶端緩存機(jī)制的缺失,也將引起種種問題,再進(jìn)一步來看,單頁面應(yīng)用(SPA)也就并非適合每一個(gè)業(yè)務(wù)場(chǎng)景,服務(wù)端視圖模版還是有比較多的適用領(lǐng)域的。
哈爾濱品用軟件有限公司致力于為哈爾濱的中小企業(yè)制作大氣、美觀的優(yōu)秀網(wǎng)站,并且能夠搭建符合百度排名規(guī)范的網(wǎng)站基底,使您的網(wǎng)站無需額外費(fèi)用,即可穩(wěn)步提升排名至首頁。歡迎體驗(yàn)最佳的哈爾濱網(wǎng)站建設(shè)。
