您當前位置>首頁 » 新聞資(zī)訊 » 網站(zhàn)建設 >
為什麼說PHP是首選的Web開發語言?
發表時間:2015-4-15
發布人:葵宇科技
浏覽次數:33
為什麼說PHP是首選的Web開發語言?
更好排版:https://zybuluo.com/phper/note/86933
轉發自2gua大神的知乎專欄:http://zhuanlan.zhihu.com/guagua/19904737
不知何時開始,程序員把一緻的調侃送給了PHP,“尊稱”其為“神語言”,并且PHP總被冠以“代碼淩亂”、“漏洞不少(shǎo)”的不良名稱。在我所接觸的Web開發技術(shù)如(rú):Rails、ASP.NET MVC、Java Web、Django、Sinatra以及PHP中(zhōng),PHP應該是首選Web開發語言。請注意,這裡的“首選”不是“最好”的意思,而是開發工具棧學習選型過程應該優先考慮的技術(shù)。
為什麼這麼說呢(ne)?理由一下(xià)子(zǐ)在腦袋裡冒出了好多條,姑且梳理下(xià)吧:
1. PHP是為Web而生的,天然與HTML、JavaScript有親近感,也就是原生味兒十足。即使是PHP與HTML代碼混雜,從某種角度而言,也能幫助初學者直觀地了解Web技術(shù)機理,壞事有時候也是好事。另一方面,開源PHP的C風格、Unix/Linux範兒讓其在Apache、Nginx等Web應用服務器(qì)上表現優異。總之,PHP與Web是渾然天成的結合方式。
2. 要掌握PHP,我建議從備受诟病的“代碼淩亂”編程風格 -- 或許是從PHP與HTML混合編程開始,待直觀了解Web開發技術(shù)之後,再考慮代碼組織和(hé)結構的重構,這樣有助于自己以更加原生的方式掌握Web的秘密。那麼,什麼是更加原生的方式呢(ne)?随手舉個(gè)例子(zǐ):典型的404狀态碼。
用PHP的實現(404.php、404.html):
<?php
header("HTTP/1.1 404 Not Found");
include("404.html");
exit;
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
</head>
<body>
<p>404頁面。</p>
</body>
</html>
再看看如(rú)ASP.NET MVC中(zhōng)的實現:
public ActionResult Details(int id)
{
return HttpNotFound();
}
雖然封裝得很好,但是,跟PHP方式比較就知道,http://ASP.NET MVC中(zhōng)的實現确實比較抽象不夠直觀,而且是在控制器(qì)裡直接定義和(hé)跳轉的。在PHP中(zhōng),顯而易見,一下(xià)就明白了代碼中(zhōng)header的含義:HTTP-Version
、Status-Code
、Reason-Phrase
。
順帶說說Rails中(zhōng)的處理方式,抽象程度也很高:
render :template => '......', :status => 404
3. 與PHP類似的還有JSP,但JSP往往需要與JEE其他技術(shù)模塊相配合使用,體系足夠龐大,需要有長期準備。其他如(rú)ASP.NET MVC、Rails等框架的抽象度較高,也不建議作為首選。
4. 不得不提Node.js,Node.js是目前很火的技術(shù),号稱“全棧”的希望所在,常拿來跟PHP争論比較:什麼并發、線程、進程等等。在這裡無意評論孰優孰劣,但至少(shǎo)PHP可(kě)以讓你(nǐ)多掌握一門技術(shù),而不止是JavaScript。此外,PHP的大型業(yè)務的成熟應用案例可(kě)是比比皆是吖。
5. 那麼,是不是該一直堅持指哪打哪的“代碼淩亂”方式呢(ne)?當然不應該。PHP提供的OOP特性足夠強大,在技能與理解程度達到一定高度時,完全可(kě)以以OOP的方式來組織代碼。在PHP領域,各種框架非常多,比如(rú)Laravel、CI、FuelPHP、Yii、Symfony、Zend Framework等等,屆時随便選一個(gè)都可(kě)以進行規範化開發。“代碼淩亂”關(guān)鍵不在于工具本身,而在于人自己!要知道用Java也能寫出爛代碼。
6. PHP的資(zī)料非常豐富。
7. 最後,有一個(gè)稍稍題外話的看法,早前我還覺得在RESTful方式不斷普及下(xià),由于RESTful Web Services使用标準的 HTTP 方法(GET/PUT/POST/DELETE)來抽象Web服務能力,服務端的重點将移至MC,而服務端視圖模版的應用會減少(shǎo),客戶端的支撐需求會越來越多。比如(rú)各種前端庫、框架将得到快速推進,越來越多的需求處理會前置到前端來處理。但現在我感覺這種狀态考慮得太過理想了,就像數據頻繁大量更疊及處理的場景,更适合服務端(如(rú)模版引擎)完成;再具體地,又如(rú)大數據量的分頁,如(rú)果都在浏覽器(qì)中(zhōng)實現,性能就一定會有很大問(wèn)題。此外,頻繁Ajax調用、客戶端緩存機制的缺失,也将引起種種問(wèn)題,再進一步來看,單頁面應用(SPA)也就并非适合每一個(gè)業(yè)務場景,服務端視圖模版還是有比較多的适用領域的。