2019為什么我們還會繼續(xù)使用 PHP?

我們來開門見山地說,PHP 是一門奇葩的語言裕偿。它既不快洞慎,語法又不漂亮。還沒有遵守良好的軟件開發(fā)實踐嘿棘。但我還是使用它開發(fā)了很多軟件劲腿。那么問題就很明顯了為什么今天還在使用 PHP?

除了個人理想主義的偏好以外鸟妙,還有很多理由焦人。這才是我們要討論的范圍。為什么選 PHP 作為我的 Web 開發(fā)語言重父?

PHP 是什么花椭?

「PHP 代表什么意思?」或者這么問房午,「PHP 是什么矿辽?」PHP 是一門編寫 web 頁面的語言,底層使用 C 語言實現(xiàn)郭厌,使用 HTML 的標簽語法包裹代碼袋倔。PHP 通常跑在服務端,與 web 服務器配合工作折柠,負責把 HTML 加工完返回給訪問者宾娜。

PHP 最初的意思是 「 Personal Home Page 」。因為這完全限制了使用該語言進行一般使用的意義和可取性扇售,所以該語言現(xiàn)在代表「 PHP:Hypertext Preprocessor」前塔。這種寫法被稱為遞歸縮寫(一種全稱中引用自己的縮寫)。極客們都喜歡用這種名字承冰。

PHP 能做什么华弓?

PHP 能用來做什么?通常來說 PHP 能做任何你想在 web 服務器上實現(xiàn)的東西困乒。 比如說做一個博客寂屏。實現(xiàn)一個 SAAS 應用也完全不在話下。寫一個臨時處理數(shù)據(jù)的腳本也是得心應手顶燕。又或者寫了一個復雜的腳本凑保,某一天突然變成了一門成功的軟件業(yè)務冈爹?過去也經(jīng)常發(fā)生涌攻。

如果你不相信我,可以看下 PHP 官網(wǎng)列出使用場景:

服務端腳本

命令行腳本

編寫桌面應用

我不太鼓勵最后一項频伤,但它確實可行恳谎。但是前兩項確實是很棒的理由 。

這就引出了一個重要且無法回避的事實...

PHP 無所不在

了解和喜愛 PHP 的理由有非常多,可能最給力和有效的理由是:它可以在網(wǎng)絡的任何地方使用和運行因痛。如果你仔細尋找婚苹,你買到每月最低3美元的托管賬戶可能可以運行 Python 或 Ruby 的 Web 應用程序。但它肯定能運行 PHP 鸵膏。這意味著無論什么時候你都可以依賴PHP膊升。

因為 PHP 可以運行在任何地方,并且它容易上手谭企,很多非常受歡迎的軟件都是用 PHP 寫的廓译。 WordPress是對我影響最大和最熟悉的例子,除此之外债查,像 Joomla 非区, Drupal , Magento 盹廷, ExpressionEngine 征绸, vBulletin (是的,它仍然存在)俄占, MediaWiki 等這些工具管怠,它們都在服務器上運行 PHP 。

不僅如此颠放,PHP 應用框架更是多得數(shù)不勝數(shù)排惨, 比如:Symfony , Zend 碰凶, Laravel 暮芭, Aura , CakePHP 欲低, Yii 甚至是古老的 CodeIgnitor 框架辕宏。當然你可以為其它任何一門語言制作一些長度相當?shù)?Web 框架列表。比如常用的 Web 語言像 Python 砾莱, Ruby 瑞筐,或 Node/JavaScript ,你甚至可以積累一個數(shù)字競爭列表來跟 PHP 比較腊瑟。但運行 PHP 的網(wǎng)站數(shù)量龐大到無法估計聚假。

WordPress 自豪地聲稱在互聯(lián)網(wǎng)上有 30% 的用戶量。 你甚至不需要相信這個說法就會意識到許多的互聯(lián)網(wǎng)應用必須使用 PHP 即使這個說法甚至可以想象成是真的闰非。

PHP 的優(yōu)點

動態(tài)化特點

PHP 和 HTML 可以非常融洽地工作在一起膘格。將 file.html 修改為 file.php ,即可在 <?php 和 ?> 標簽里編寫 PHP 代碼财松,并且大部分的 Web 服務器默認配置就是可以直接運行 PHP 腳本瘪贱。正因為其門檻非常低纱控,不需要懂太多編程知識的菜鳥程序員也可以直接上手操作,以至于產生了很多低品質的代碼菜秦。

因為其易學性甜害,大量的菜鳥程序員涌入,暴露出來另一個 PHP 一直被人詬病的問題:PHP 并沒有對自己是最好的 Web 服務器端語言有清晰的遠景球昨,當然也沒為此做過太好的設計尔店。導致走向了另一個結果,來自全球各地松散的合作主慰,大雜燴般地貢獻代碼和想法闹获,難以避免地,有一些壞的想法滲入其中河哑。

擁有強大的面向對象包管理是現(xiàn)在 PHP 中的一種標準

Composer 是 PHP 的加分項避诽。

在 PHP 的開發(fā)中,經(jīng)常會有一些奇葩的東西被發(fā)布出來璃谨。最著名的栗子當屬 PHP 5.3 (廣泛的被視為 PHP 的第一個現(xiàn)代化版本 )中引入 goto 聲明沙庐。

類似的問題是在 PHP 成長過程中產生:面向對象最初是作為一個有缺陷和有限制的概念來實現(xiàn)的,標準庫中充滿了不一致的名稱和參數(shù)排序佳吞,并且(舉個近來備受關注的栗子)在 PHP 5.3 中 :: 操作符無法識別時拱雏,解析器會拋出可讀性很差的報錯信息:語法錯誤 (T_PAAMAYIM_NEKUDOTAYIM) ,如果不看文檔底扳,你能用英文來理解這個 T_PAAMAYIM_NEKUDOTAYIM 標示的意思嗎铸抑?

但是現(xiàn)在,PHP 已經(jīng)完全支持 OOP衷模。很少語言具有像 PHP 這樣類似 Java 的 OOP 實現(xiàn)鹊汛。另外,與 Java不同的是阱冶,PHP 有一個單獨的并擁有廣泛支持的包管理器刁憋,叫作 Composer。它非常的好用木蹬,并且不容忽視的一點是它可以方便地引用優(yōu)質且維護良好的庫至耻,具有很高的易用性。

PHP 的高速發(fā)展

通過這些事實發(fā)現(xiàn)镊叁, PHP 正在以有趣的方式發(fā)展著尘颓。它正逐漸成為像java一樣功能齊全的面向對象語言(更好或更糟糕),正在為函數(shù)式編程提供簡單的抽象晦譬,這可以說是當前的熱點疤苹。并且,正在發(fā)展一套非常棒的工具蛔添, PHP 喜歡 Composer , 并有充分的理由 --- 因為它在一些大型開源項目的協(xié)同工作上做出了值得贊揚的努力.

當然痰催,我們不應該忘記當前的熱點:PHP 在 PHP7 系列版本中的發(fā)展取得了速度上的提升。這被廣泛認為是由 Facbook 出現(xiàn)的 HHVM 引起的迎瞧,在短時間內夸溶,存在 HHVM 的發(fā)展速度會破壞 PHP 社區(qū)的風險,但事實并非如此凶硅,相反缝裁,PHP 的發(fā)展速度快得多,以至于人們幾乎忘記了 HHVM 的存在足绅。

PHP 有一個巨大的社區(qū)捷绑;它對新手友好。

如果你決定使用什么很酷的新技術氢妈,我認為經(jīng)常得到很少關注的是與語言達成協(xié)議的方式粹污。學習PHP是什么感覺? PHP教程很好找首量,質量通常也很好壮吩。

PHP流行的一個缺點是,你會從那些對工具不夠了解的人那里找到一些不那么好的教學加缘⊙夹穑或者從某人那里學到的“最佳實踐”是十年前的。但總的來說拣宏,這很少見沈贝,我不認為它應該讓你灰心⊙或者突然發(fā)現(xiàn)自己使用了幾個月的最佳實踐并不是最好的是很少見的宋下,也不是一個大問題。

PHP 與其他語言的比較

接下來我們要對比下 PHP 與其他的語言辑莫,這些語言需滿足以下要求:

開源:意味著你可以自由杨凑、免費地使用或者查看底層語言或者程序;應用于 Web 開發(fā)領域:不一定是專注于 Web 開發(fā)摆昧,但是在 Web 開發(fā)中有比較大的應用撩满;高階動態(tài)語言:具備動態(tài)語言的特性,大部分面向 Web 應用的語言兼具此特性绅你;足夠大的社區(qū):有很多滿足以上條件伺帘,但是只是在小范圍使用的語言,我們使用這最后一個條件將他們過濾掉忌锯。

為什么使用 PHP伪嫁?而不是 JavaScript?

也許和 PHP 比較的最重要的語言是 JavaScript∨伎澹現(xiàn)代開發(fā)要求每個項目都至少會一點 JavaScript 來進行客戶端開發(fā)和交互张咳。借助 Node帝洪,這使得在服務器上使用 JS 變得相對簡單。在服務器上和客戶端“同構”使用相同的語言非常吸引人脚猾。

如同 PHP葱峡,JavaScript 是一個兼容并蓄但有時丑陋的語言,有很多的瑕疵和“陷阱”龙助,但 JavaScript 在過去十年變得非撑檗龋快,所以他的情況是真實的提鸟。為什么選擇 PHP 而不是 JavaScript军援?你已有專業(yè)知識或者在 PHP 使用庫。否則称勋,我認為 JavaScript 或許是個更好的選擇胸哥。

PHP 對比動態(tài)服務器頁面 (.Net Core)

動態(tài)服務器語言起源于一個用于網(wǎng)友編程的 Microsoft 語言。他和 PHP 非常直接相似赡鲜。但他運行在 Windows 服務器環(huán)境烘嘱。這被 ASP.net 取代了。現(xiàn)在已被 ASP.NET Core 取代蝗蛙。后兩者現(xiàn)在是 PHP 一樣的開源語言蝇庭。而我個人從沒有在任何變體中寫過一點 ASP。

如果我使用且更喜歡 Microsoft 服務器的話捡硅,我會更喜歡 ASP哮内。其他情況,請給我 PHP壮韭。兩者社區(qū)的規(guī)模和大小沒有可比性北发。

我應該使用 Ruby 還是 PHP?

Ruby喷屋,特別是 Ruby on Rails琳拨,在過去十年前 非常 受歡迎。Ruby 依然是一個備受喜愛的語言屯曹,這在我看來他比 PHP 優(yōu)雅狱庇。也就是說,他的社區(qū)較小恶耽。同時我認識到 Ruby 已經(jīng)不再是 "熱門語言"(被 JavaScript 取代了此角色)密任。Ruby 的優(yōu)雅,并且有足夠多的人擅長使用偷俭,因此我不會避免他浪讳。但招聘已熟悉 Ruby 的人依舊比招聘 PHP 要難。(雖然我認為一般的 Ruby 開發(fā)者水平比相同的 PHP 開發(fā)者要高涌萤。)

Python vs PHP:誰更好一些淹遵?

最后一種與 PHP 一對一比較起來有意義的是 Python 口猜。 Python 的使用場景要更多,相對于專注于 web 開發(fā)的 PHP 來說(尤其是在數(shù)據(jù)統(tǒng)計與分析上面)透揣。而且人們普遍都覺得它是一種更為更穩(wěn)定和優(yōu)雅的語言济炎。

就像 Ruby 和 JavaScript 一樣, Python 在服務器上運行要比 PHP 稍微麻煩一點淌实。但是它是一種非常完美的語言,而且比起 PHP 的使用更具多樣化猖腕,我認為它是比 PHP 更流行的語言之一拆祈,而且在其他方面(例如:各種第三方的庫、專業(yè)技術知識的獲取倘感、招聘求職)都是一樣的放坏。

PHP vs Go 語言?Scala語言老玛?Java語言淤年?等等

一開始曾提到過,許多語言在做比較時或多或少會有一些相似的地方蜡豹。這里有很多的語言可以拿來做對比麸粮,因此簡單的聊幾個:

java 非常受歡迎,并且效率很高镜廉。通常被用來搭建安卓應用程序弄诲,桌面應用程序,和 web 端應用娇唯。不過齐遵,它不是動態(tài)類型的,它有更好的性能保證塔插,但很適合Web 編程梗摇。

Go 是 Google 支持的正在發(fā)展的一門新語言。它專注 web 服務想许。但是這塊相比 PHP 還是有些不足(更像 C 語言)伶授,它的執(zhí)行速度很快,但是社區(qū)相對有限流纹。

Scala 是一種流行的運行在內存區(qū)(Java 兼容)的語言谎砾,也似乎越來越受歡迎。它比 PHP 設計的更優(yōu)雅捧颅,但是除此之外景图,似乎沒有更多了。

此外碉哑,我覺得這些分析足夠可以做出選擇了挚币,但是你有更多的選項可以去考量亮蒋,不過最后我的替代方案將會考慮 PHP。

需要按需選擇編程語言

有了上面的比較妆毕,為什么還要使用 PHP 慎玖?上文我已經(jīng)提過了一些 PHP 里壞的設計,有一些我經(jīng)常性會經(jīng)歷笛粘,例如在『查找類型的函數(shù)』里趁怔,這些函數(shù)needle 和 haystack 順序不一致,在沒有代碼補全的環(huán)境下薪前,我還是會掉坑里任斋。

如果你在構建一個全新的 Web 項目馏锡,并且此項目不需要與其他系統(tǒng)交互炭菌,并且只有你一個人在工作为严,你想試試看其他語言,類似 Python 什么的垛膝。但是鳍侣,你需要知道的是,即使是這樣的一個項目吼拥,還是有很多理由讓你選擇 PHP倚聚。

任何現(xiàn)代化的語言都可以讓你構建一個 Web App。每一門語言都有他們不足之處凿可,例如 PHP 就是這樣的秉沼,PHP 要求你清晰地了解其不足之處,然后才能決策是否要在項目里使用它矿酵。但是對于我來說唬复,我仍然會選擇 PHP 來構建我的 Web 項目,就如 Keith Adams 在其 演講里 提到的:

PHP 的開發(fā)效率真不是一般的高全肮。

如果你有一個 Python 的團隊敞咧,請使用 Python。如果你有個合伙人熟悉 Java辜腺,請使用 Java 來編寫你的 SaaS 程序休建。語言,永遠都不是最重要的评疗。

本文參考地址:https://www.php.cn/toutiao-415877.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末测砂,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子百匆,更是在濱河造成了極大的恐慌砌些,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異存璃,居然都是意外死亡仑荐,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門纵东,熙熙樓的掌柜王于貴愁眉苦臉地迎上來粘招,“玉大人,你說我怎么就攤上這事偎球∪髟” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵衰絮,是天一觀的道長袍冷。 經(jīng)常有香客問我,道長岂傲,這世上最難降的妖魔是什么难裆? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任子檀,我火速辦了婚禮镊掖,結果婚禮上,老公的妹妹穿的比我還像新娘褂痰。我一直安慰自己亩进,他們只是感情好,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布缩歪。 她就那樣靜靜地躺著归薛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪匪蝙。 梳的紋絲不亂的頭發(fā)上主籍,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機與錄音逛球,去河邊找鬼千元。 笑死,一個胖子當著我的面吹牛颤绕,可吹牛的內容都是我干的幸海。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼奥务,長吁一口氣:“原來是場噩夢啊……” “哼物独!你這毒婦竟也來了?” 一聲冷哼從身側響起氯葬,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤挡篓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后帚称,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瞻凤,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡憨攒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了阀参。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肝集。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蛛壳,靈堂內的尸體忽然破棺而出杏瞻,到底是詐尸還是另有隱情,我是刑警寧澤衙荐,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布捞挥,位于F島的核電站,受9級特大地震影響忧吟,放射性物質發(fā)生泄漏砌函。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一溜族、第九天 我趴在偏房一處隱蔽的房頂上張望讹俊。 院中可真熱鬧,春花似錦煌抒、人聲如沸仍劈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贩疙。三九已至,卻和暖如春况既,著一層夾襖步出監(jiān)牢的瞬間这溅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工棒仍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留悲靴,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓降狠,卻偏偏與公主長得像对竣,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子榜配,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355