国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

與Java相比更具爭(zhēng)議的PHP

5RJg_mcuworld ? 來(lái)源:fqj ? 2019-05-20 17:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

編程語(yǔ)言之爭(zhēng)自古以來(lái)就從未停歇,對(duì)于有著“世界上最好的編程語(yǔ)言”之稱的 PHP,表面看似贊揚(yáng),實(shí)則為諷刺。PHP 確實(shí)簡(jiǎn)單易上手,但是其函數(shù)命名不規(guī)范、核心異步網(wǎng)絡(luò)不支持、后期維護(hù)困難等缺點(diǎn),讓不少開發(fā)者避之不及。不過(guò),PHP 經(jīng)過(guò)了這么多年的發(fā)展,還是槽點(diǎn)滿滿嗎?

你還記得幾年前流行的那篇名為“全面解析PHP的糟糕設(shè)計(jì)(PHP: a fractal of bad design)”博客文章嗎?當(dāng)我第一次讀它的時(shí)候,我在一個(gè)不入流的公司工作,那里有很多老舊的PHP項(xiàng)目。這篇文章讓我思考我是否應(yīng)該放棄編程,去做一些完全不同的事情。

幸運(yùn)的是,我很快地就換了份工作。更重要的是,自5.*版本后,PHP有了長(zhǎng)足的發(fā)展。今天,我想向那些不再使用PHP編程,或者仍然在老舊項(xiàng)目中蹣跚躑躅的人分享我的一些切身體會(huì)。

劇透一下:今天的PHP依然有些很糟糕的設(shè)計(jì),就像幾乎所有的編程語(yǔ)言都有它的怪癖一樣。很多PHP核心函數(shù)的方法簽名仍然不一致,它的配置設(shè)置仍然很混亂,許多開發(fā)人員仍在編寫蹩腳的PHP代碼,因?yàn)樗麄儾坏貌贿@樣做,或者因?yàn)樗麄儾涣私飧玫膶懛ā?/p>

今天我想在這里分享的是PHP的陽(yáng)光的一面,讓我們把注意力放在那些已經(jīng)發(fā)生了變化的地方,以及可以幫助大家編寫干凈且可維護(hù)的PHP代碼的方法。接下來(lái)的幾分鐘內(nèi),我希望大家先拋開任何偏見來(lái)閱讀。

讀完會(huì),你可以自由地和以前一樣思考PHP。盡管有很大的機(jī)會(huì),你會(huì)對(duì)過(guò)去幾年P(guān)HP所取得的下列進(jìn)步感到驚訝:

每年都會(huì)有一個(gè)新的PHP版本在活躍地開發(fā)。

新的PHP性能至少是PHP5時(shí)代的兩倍,可能已經(jīng)達(dá)到了三倍。

有一個(gè)非常活躍的涵蓋了框架、包和平臺(tái)的生態(tài)系統(tǒng)。

在過(guò)去的幾年里,PHP增加了許多新特性,并且語(yǔ)言自身在不斷發(fā)展。

靜態(tài)分析工具在過(guò)去幾年已經(jīng)成熟,并且會(huì)不斷增長(zhǎng)。

下面我會(huì)附上我的一個(gè)業(yè)余項(xiàng)目的源代碼來(lái)解釋說(shuō)明,它是用PHP和Laravel編寫。這里是我們?cè)谵k公室維護(hù)的幾百個(gè)OSS包的列表。這兩個(gè)都是現(xiàn)代PHP項(xiàng)目的好例子。

讓我們開始吧。

歷史總結(jié)

為了更好地衡量,讓我們今天快速回顧一下PHP的發(fā)布周期。我們現(xiàn)在使用的是PHP 7.3版本,預(yù)計(jì)2019年底將發(fā)布7.4版本。而PHP 8.0版本將是7.4版本之后的下一個(gè)版本。

從5.* 時(shí)代后期開始,PHP核心開發(fā)團(tuán)隊(duì)就努力保持一年一個(gè)新版本的發(fā)布周期,并且在過(guò)去的四年中成功地做到了這一點(diǎn)。

總的來(lái)說(shuō),每一個(gè)新版本都會(huì)得到核心團(tuán)隊(duì)兩年的積極支持,再加上一年的“僅提供安全補(bǔ)丁”的支持。目標(biāo)是鼓勵(lì)PHP開發(fā)人員盡可能地使用最新版本。因?yàn)槊磕赀M(jìn)行小的升級(jí)要比從5.4版本直接升級(jí)到7.0版本容易得多。

最后提一下,PHP 5.6是5.* 的最后一個(gè)版本,它的下一個(gè)版本就是7.0版。如果你想知道PHP 6發(fā)生了什么,可以收聽PHP Roundtable上的這個(gè)播客音頻

從那里,我們可以認(rèn)清關(guān)于現(xiàn)代PHP的一些常見誤解。

PHP的性能

回到PHP 5.*時(shí)代,那時(shí)候PHP的性能在最好的情況下也只是中等。然而,到了7.0版本后,PHP核心的大部分被從頭開始重寫,這將它的性能提高了兩到三倍。

光用言語(yǔ)不能證明這一點(diǎn)。讓我們看看基準(zhǔn)測(cè)試的結(jié)果。幸運(yùn)的是,有人在PHP性能的基準(zhǔn)測(cè)試上投入了大量時(shí)間。我發(fā)現(xiàn)Kinsta的這篇文章提供了一個(gè)最新的不同版本的性能比較列表。

自從7.0升級(jí)以來(lái),性能提高了如些之多。以至于PHPWeb應(yīng)用程序的性能已經(jīng)可以和其他語(yǔ)言的Web框架相當(dāng)(在某些情況下甚至更好)。看看這個(gè)擴(kuò)展的基準(zhǔn)測(cè)試套件,可以得到更多信息。

當(dāng)然,PHP框架在性能上不會(huì)優(yōu)于C和Rust,但是它們確實(shí)比Rails或Django要好得多,并且與ExpressJS相當(dāng)。

框架和生態(tài)系統(tǒng)

說(shuō)到框架:PHP不再只是WordPress了。作為一個(gè)專業(yè)的PHP開發(fā)人員,讓我告訴你一件事:WordPress在任何方面都不再能代表當(dāng)代的PHP生態(tài)系統(tǒng)。

總的來(lái)說(shuō),PHP有兩個(gè)主要的Web應(yīng)用程序框架:Symfony和Laravel。當(dāng)然還有幾個(gè)較小的框架,如Zend, Yii, Cake,Code Igniter等等。但是如果你想了解現(xiàn)代PHP開發(fā)是什么樣子,你最好擅長(zhǎng)使用這兩個(gè)主要框架中的一個(gè)。

這兩個(gè)框架都有一個(gè)由軟件包和產(chǎn)品組成的大型生態(tài)系統(tǒng)。從管理面板,CRM,到獨(dú)立軟件包,從CodeIgniter(簡(jiǎn)稱CI)到profiler,從Web套接字服務(wù)器、隊(duì)列管理器、至支付集成等眾多服務(wù)。老實(shí)說(shuō),這里有太多要列出的內(nèi)容。

不過(guò),這些框架都是為實(shí)際開發(fā)需要而設(shè)計(jì)的。如果你需要純粹的內(nèi)容管理,像WordPress和CraftCMS這樣的平臺(tái)只會(huì)越來(lái)越完善。

衡量PHP生態(tài)系統(tǒng)當(dāng)前狀態(tài)的一種方法是查看Packagist,它是PHP主要軟件包的代碼倉(cāng)庫(kù)。它現(xiàn)在以指數(shù)級(jí)別快速增長(zhǎng)。每天下載量為2500萬(wàn)次,可以公平地說(shuō),PHP生態(tài)系統(tǒng)已經(jīng)不像以前那樣地處于劣勢(shì)。

下面這張圖展示了隨著時(shí)間的推移,包和版本的數(shù)量增長(zhǎng)情況。這張圖可以在Packagist官網(wǎng)上找到。

與Java相比更具爭(zhēng)議的PHP

除了應(yīng)用程序框架和CMS之外,我們還看到了異步框架在過(guò)去幾年的興起。

這些用PHP或其他語(yǔ)言編寫的框架和服務(wù)器,允許用戶運(yùn)行真正的異步PHP。異步框架的例子包括Swoole、Amp和ReactPHP。

我們已經(jīng)步入了一個(gè)異步編程的世界,像Web套接字和具有大量IO的應(yīng)用程序之類的東西實(shí)際上已經(jīng)越來(lái)越被PHP世界所關(guān)注。

PHP內(nèi)部郵件列表-這個(gè)核心開發(fā)人員討論語(yǔ)言開發(fā)的地方,也在討論把libuv添加到內(nèi)核中來(lái)支持異步編程。對(duì)于那些不了解libuv的人來(lái)說(shuō),可以認(rèn)為libuv是Node.js用于允許所有異步性的一個(gè)庫(kù)。

PHP語(yǔ)言本身

雖然async和await這兩個(gè)特性現(xiàn)在還不可用,但是在過(guò)去的幾年里,PHP語(yǔ)言本身已經(jīng)有了很多改進(jìn)。

當(dāng)我們討論編程語(yǔ)言特性的主題時(shí),讓我們也來(lái)談?wù)劗?dāng)今編程語(yǔ)言的發(fā)展過(guò)程。首先有一個(gè)活躍的核心志愿者團(tuán)隊(duì),他們推動(dòng)了編程語(yǔ)言的發(fā)展。同時(shí)開發(fā)社區(qū)成員可以提出RFC。

接下來(lái),這些RFC 會(huì)在“內(nèi)部”郵件列表中討論,郵件列表可以在線閱讀。在新的語(yǔ)言特性被添加之前,必須進(jìn)行投票。只有得到三分之二核心團(tuán)隊(duì)同意的RFC才允許被添加進(jìn)來(lái)。

允許投票的可能有約100人,但是并不要求每個(gè)人都對(duì)每個(gè)RFC投票。核心團(tuán)隊(duì)的成員當(dāng)然可以投票,因?yàn)樗麄儽仨毦S護(hù)代碼庫(kù)。除了他們之外,還有從PHP社區(qū)中單獨(dú)挑選出來(lái)的人可以投票。這些人包括PHP文檔的維護(hù)者、整個(gè)PHP項(xiàng)目的貢獻(xiàn)者以及PHP社區(qū)中的杰出開發(fā)人員。

雖然大多數(shù)核心開發(fā)都是在自愿的基礎(chǔ)上完成的,但最近JetBrains雇傭了一名核心PHP開發(fā)人員Nikita Popov來(lái)做全職開發(fā)工作。另一個(gè)例子是Linux基金會(huì)最近決定投資Zend Framework開源框架。這樣的雇傭和收購(gòu)確保了PHP未來(lái)發(fā)展的穩(wěn)定性。

工具

除了PHP核心本身,在過(guò)去的幾年里,我們看到了圍繞PHP開發(fā)的工具的增加。首先我們想到的是靜態(tài)代碼分析工具,像Vimeo團(tuán)隊(duì)開發(fā)的Psalm,以及Phan和PHPStan。

這些工具將靜態(tài)分析你的PHP代碼并報(bào)告任何類型錯(cuò)誤,以及可能導(dǎo)致的bug等等。在某種程度上,它們提供的功能可以與TypeScript相媲美。但是PHP現(xiàn)在不提供轉(zhuǎn)換(transpile),所以不允許使用自定義語(yǔ)法。

盡管這意味著我們需要依賴docblocks,但是PHP之父Rasmus Lerdorf確實(shí)提到了在核心中添加靜態(tài)分析引擎的想法。雖然潛力巨大,但這也是一項(xiàng)艱巨的任務(wù)。

說(shuō)到轉(zhuǎn)換(transpiling)。受到 JavaScript 社區(qū)的啟發(fā),目前 已經(jīng)已經(jīng)有人開始在用戶領(lǐng)域擴(kuò)展PHP語(yǔ)法。一個(gè)名為Pre的項(xiàng)目就是這樣做的,它允許新的PHP語(yǔ)法轉(zhuǎn)換為普通的 PHP 代碼。

雖然這個(gè)想法已經(jīng)在 JavaScript 中被證明可行,但是只有先提供了適當(dāng)?shù)腎DE和靜態(tài)分析支持,它才能在PHP中工作。這是一個(gè)非常有趣的想法,但它必須經(jīng)歷一個(gè)成長(zhǎng)過(guò)程才能稱為“主流”。

結(jié)語(yǔ)

雖然說(shuō)了這么多,但是你仍然可以把PHP看作是一種蹩腳的語(yǔ)言。這門語(yǔ)言確實(shí)有其缺點(diǎn)和20年的傳承包袱,但是我可以自信地說(shuō),我喜歡用它工作。

根據(jù)我的經(jīng)驗(yàn),我能夠用它來(lái)創(chuàng)建可靠的,可維護(hù)的和高質(zhì)量的軟件。我為之工作的客戶和我一樣,他們對(duì)最終的結(jié)果很滿意。

雖然用PHP仍然可能做出很多混亂的事情,但如果使用得當(dāng)和正確的話,我會(huì)說(shuō)這是Web開發(fā)的一個(gè)很好的選擇。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    3001

    瀏覽量

    116438
  • PHP
    PHP
    +關(guān)注

    關(guān)注

    0

    文章

    462

    瀏覽量

    28624

原文標(biāo)題:比 Java 更具爭(zhēng)議的 PHP,處處留坑?

文章出處:【微信號(hào):mcuworld,微信公眾號(hào):嵌入式資訊精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    CW32L052與STM32L053系列相比較,有什么優(yōu)勢(shì)么?

    CW32L052與STM32L053系列相比較,有什么優(yōu)勢(shì)么?
    發(fā)表于 01-13 06:27

    醫(yī)院隨訪管理系統(tǒng)源碼,三級(jí)隨訪系統(tǒng)源碼,Java+Springboot,Vue,Ant-Design+MySQL5

    Java版隨訪系統(tǒng)源碼,醫(yī)院隨訪管理系統(tǒng)源碼,三級(jí)隨訪系統(tǒng)源碼,B/S前后端分離架構(gòu),自主版權(quán),落地案例。 技術(shù)框架:Java+Springboot,Vue,Ant-Design+MySQL5 開發(fā)
    的頭像 發(fā)表于 11-08 14:48 ?528次閱讀
    醫(yī)院隨訪管理系統(tǒng)源碼,三級(jí)隨訪系統(tǒng)源碼,<b class='flag-5'>Java</b>+Springboot,Vue,Ant-Design+MySQL5

    Arm Neoverse CPU上大代碼量Java應(yīng)用的性能測(cè)試

    Java 是互聯(lián)網(wǎng)領(lǐng)域廣泛使用的編程語(yǔ)言。Java 應(yīng)用的一些特性使其性能表現(xiàn)與提前編譯的原生應(yīng)用(例如 C 程序)大相徑庭。由于 Java 字節(jié)碼無(wú)法直接在 CPU 上執(zhí)行,因此通常運(yùn)行時(shí)在
    的頭像 發(fā)表于 11-05 11:25 ?757次閱讀
    Arm Neoverse CPU上大代碼量<b class='flag-5'>Java</b>應(yīng)用的性能測(cè)試

    Java 25正式發(fā)布,重要特性詳解(附代碼示例):靈活構(gòu)造函數(shù)體、模塊導(dǎo)入聲明、AOT方法分析等

    Java 25現(xiàn)已發(fā)布,更多新特性來(lái)了!配合Perforce JRebel,代碼修改即時(shí)生效,無(wú)需重啟服務(wù),即可實(shí)現(xiàn)“改完就看效果”。新特性+快工具,讓你的Java開發(fā)體驗(yàn)雙倍提升!
    的頭像 發(fā)表于 10-29 13:16 ?1438次閱讀
    <b class='flag-5'>Java</b> 25正式發(fā)布,重要特性詳解(附代碼示例):靈活構(gòu)造函數(shù)體、模塊導(dǎo)入聲明、AOT方法分析等

    從 0 到 1:用 PHP 爬蟲優(yōu)雅地拿下京東商品詳情

    PHP 語(yǔ)言 實(shí)現(xiàn)一個(gè) 可運(yùn)行的京東商品爬蟲 ,不僅能抓取商品標(biāo)題、價(jià)格、圖片、評(píng)價(jià)數(shù),還能應(yīng)對(duì)常見的反爬策略。全文附完整代碼, 復(fù)制粘貼即可運(yùn)行 。 一、為什么選擇 PHP 做爬蟲? 雖然 Python 是爬蟲界的“老大哥”,但 P
    的頭像 發(fā)表于 09-23 16:42 ?855次閱讀
    從 0 到 1:用 <b class='flag-5'>PHP</b> 爬蟲優(yōu)雅地拿下京東商品詳情

    Java效率提升指南:5個(gè)Java工具選型建議及Perforce JRebel和XRebel介紹

    企業(yè)級(jí)Java環(huán)境越來(lái)越復(fù)雜,真正的破局點(diǎn),可能不在“人”,而在于“工具”。5個(gè)實(shí)用建議,幫你理清Java工具的選型思路。
    的頭像 發(fā)表于 09-11 13:59 ?1494次閱讀
    <b class='flag-5'>Java</b>效率提升指南:5個(gè)<b class='flag-5'>Java</b>工具選型建議及Perforce JRebel和XRebel介紹

    Java 在物聯(lián)網(wǎng)與嵌入式系統(tǒng)中的應(yīng)用前景與挑戰(zhàn)

    引言 隨著物聯(lián)網(wǎng)與嵌入式技術(shù)的快速發(fā)展,設(shè)備端的軟件開發(fā)需求不斷增加。傳統(tǒng)上,嵌入式設(shè)備多使用 C、C++ 進(jìn)行開發(fā),但近年來(lái),Java 逐漸成為物聯(lián)網(wǎng)領(lǐng)域的重要角色。憑借其跨平臺(tái)特性、豐富
    的頭像 發(fā)表于 09-04 14:49 ?990次閱讀

    Perforce JRebel 簡(jiǎn)介:即時(shí)加載代碼變更,加速Java應(yīng)用開發(fā)

    Perforce JRebel 專為Java開發(fā)提速而生!支持跳過(guò)構(gòu)建與重新部署,實(shí)時(shí)加載代碼變更,支持100+框架,無(wú)縫集成主流IDE與應(yīng)用服務(wù)器。
    的頭像 發(fā)表于 08-14 14:35 ?759次閱讀
    Perforce JRebel 簡(jiǎn)介:即時(shí)加載代碼變更,加速<b class='flag-5'>Java</b>應(yīng)用開發(fā)

    芯盾時(shí)代解決方案助力企業(yè)阻斷數(shù)據(jù)泄密風(fēng)險(xiǎn)

    與內(nèi)部員工相比,外包人員的管理存在天然的“灰色地帶”,其數(shù)據(jù)泄密風(fēng)險(xiǎn)更具隱蔽性和突發(fā)性。
    的頭像 發(fā)表于 07-07 14:49 ?1217次閱讀

    EtherCAT運(yùn)動(dòng)控制卡應(yīng)用開發(fā)教程之Java

    運(yùn)動(dòng)控制卡的Java開發(fā)及DLL調(diào)用
    的頭像 發(fā)表于 06-13 14:29 ?892次閱讀
    EtherCAT運(yùn)動(dòng)控制卡應(yīng)用開發(fā)教程之<b class='flag-5'>Java</b>

    旋轉(zhuǎn)花鍵與齒輪傳動(dòng)哪個(gè)更具優(yōu)勢(shì)?

    旋轉(zhuǎn)花鍵與齒輪傳動(dòng)哪個(gè)更具優(yōu)勢(shì)?
    的頭像 發(fā)表于 06-03 18:08 ?650次閱讀
    旋轉(zhuǎn)花鍵與齒輪傳動(dòng)哪個(gè)<b class='flag-5'>更具</b>優(yōu)勢(shì)?

    Java開發(fā)者必備的效率工具——Perforce JRebel是什么?為什么很多Java開發(fā)者在用?

    Perforce JRebel是一款Java開發(fā)效率工具,旨在幫助java開發(fā)人員更快地編寫更好的應(yīng)用程序。JRebel可即時(shí)重新加載對(duì)代碼的修改,無(wú)需重啟或重新部署應(yīng)用程序,就能讓開發(fā)者即時(shí)看到代碼更改的效果,從而縮短開發(fā)、調(diào)試和測(cè)試周期,大大提升開發(fā)效率。
    的頭像 發(fā)表于 04-27 13:44 ?854次閱讀
    <b class='flag-5'>Java</b>開發(fā)者必備的效率工具——Perforce JRebel是什么?為什么很多<b class='flag-5'>Java</b>開發(fā)者在用?

    Java 到 Go:面向?qū)ο蟮木奕伺c云原生的輕騎兵

    Go 語(yǔ)言在 2009 年被 Google 推出,在創(chuàng)建之初便明確提出了“少即是多(Less is more)”的設(shè)計(jì)原則,強(qiáng)調(diào)“以工程效率為核心,用極簡(jiǎn)規(guī)則解決復(fù)雜問(wèn)題”。它與 Java 語(yǔ)言生態(tài)
    的頭像 發(fā)表于 04-25 11:13 ?649次閱讀

    Leadway電源模塊的價(jià)格和村田電源相比如何?

    Leadway電源模塊的價(jià)格和村田電源相比如何?Leadway電源模塊作為國(guó)產(chǎn)電源模塊中的佼佼者,以其高性能與高性價(jià)比,在工業(yè)控制、通信設(shè)備、消費(fèi)電子等多個(gè)領(lǐng)域得到了廣泛應(yīng)用。核心功能與顯著優(yōu)勢(shì)性能
    發(fā)表于 03-27 09:49

    我只會(huì)Java,憑什么不能玩轉(zhuǎn)樹莓派?GPIO操控竟比C++更優(yōu)雅~

    導(dǎo)語(yǔ)當(dāng)全球開發(fā)者默認(rèn)將Python視為樹莓派的"母語(yǔ)"時(shí),一個(gè)顛覆認(rèn)知的工具鏈正在Java開發(fā)者群體中口口相傳——Pi4J讓Java代碼直接操控GPIO、I2C、SPI等硬件接口
    的頭像 發(fā)表于 03-25 09:21 ?1134次閱讀
    我只會(huì)<b class='flag-5'>Java</b>,憑什么不能玩轉(zhuǎn)樹莓派?GPIO操控竟比C++更優(yōu)雅~