在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

與Java相比更具爭議的PHP

5RJg_mcuworld ? 來源:fqj ? 2019-05-20 17:16 ? 次閱讀

編程語言之爭自古以來就從未停歇,對于有著“世界上最好的編程語言”之稱的 PHP,表面看似贊揚,實則為諷刺。PHP 確實簡單易上手,但是其函數命名不規范、核心異步網絡不支持、后期維護困難等缺點,讓不少開發者避之不及。不過,PHP 經過了這么多年的發展,還是槽點滿滿嗎?

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

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

劇透一下:今天的PHP依然有些很糟糕的設計,就像幾乎所有的編程語言都有它的怪癖一樣。很多PHP核心函數的方法簽名仍然不一致,它的配置設置仍然很混亂,許多開發人員仍在編寫蹩腳的PHP代碼,因為他們不得不這樣做,或者因為他們不了解更好的寫法。

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

讀完會,你可以自由地和以前一樣思考PHP。盡管有很大的機會,你會對過去幾年PHP所取得的下列進步感到驚訝:

每年都會有一個新的PHP版本在活躍地開發。

新的PHP性能至少是PHP5時代的兩倍,可能已經達到了三倍。

有一個非常活躍的涵蓋了框架、包和平臺的生態系統。

在過去的幾年里,PHP增加了許多新特性,并且語言自身在不斷發展。

靜態分析工具在過去幾年已經成熟,并且會不斷增長。

下面我會附上我的一個業余項目的源代碼來解釋說明,它是用PHP和Laravel編寫。這里是我們在辦公室維護的幾百個OSS包的列表。這兩個都是現代PHP項目的好例子。

讓我們開始吧。

歷史總結

為了更好地衡量,讓我們今天快速回顧一下PHP的發布周期。我們現在使用的是PHP 7.3版本,預計2019年底將發布7.4版本。而PHP 8.0版本將是7.4版本之后的下一個版本。

從5.* 時代后期開始,PHP核心開發團隊就努力保持一年一個新版本的發布周期,并且在過去的四年中成功地做到了這一點。

總的來說,每一個新版本都會得到核心團隊兩年的積極支持,再加上一年的“僅提供安全補丁”的支持。目標是鼓勵PHP開發人員盡可能地使用最新版本。因為每年進行小的升級要比從5.4版本直接升級到7.0版本容易得多。

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

從那里,我們可以認清關于現代PHP的一些常見誤解。

PHP的性能

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

光用言語不能證明這一點。讓我們看看基準測試的結果。幸運的是,有人在PHP性能的基準測試上投入了大量時間。我發現Kinsta的這篇文章提供了一個最新的不同版本的性能比較列表。

自從7.0升級以來,性能提高了如些之多。以至于PHPWeb應用程序的性能已經可以和其他語言的Web框架相當(在某些情況下甚至更好)。看看這個擴展的基準測試套件,可以得到更多信息。

當然,PHP框架在性能上不會優于C和Rust,但是它們確實比Rails或Django要好得多,并且與ExpressJS相當。

框架和生態系統

說到框架:PHP不再只是WordPress了。作為一個專業的PHP開發人員,讓我告訴你一件事:WordPress在任何方面都不再能代表當代的PHP生態系統。

總的來說,PHP有兩個主要的Web應用程序框架:Symfony和Laravel。當然還有幾個較小的框架,如Zend, Yii, Cake,Code Igniter等等。但是如果你想了解現代PHP開發是什么樣子,你最好擅長使用這兩個主要框架中的一個。

這兩個框架都有一個由軟件包和產品組成的大型生態系統。從管理面板,CRM,到獨立軟件包,從CodeIgniter(簡稱CI)到profiler,從Web套接字服務器、隊列管理器、至支付集成等眾多服務。老實說,這里有太多要列出的內容。

不過,這些框架都是為實際開發需要而設計的。如果你需要純粹的內容管理,像WordPress和CraftCMS這樣的平臺只會越來越完善。

衡量PHP生態系統當前狀態的一種方法是查看Packagist,它是PHP主要軟件包的代碼倉庫。它現在以指數級別快速增長。每天下載量為2500萬次,可以公平地說,PHP生態系統已經不像以前那樣地處于劣勢。

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

與Java相比更具爭議的PHP

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

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

我們已經步入了一個異步編程的世界,像Web套接字和具有大量IO的應用程序之類的東西實際上已經越來越被PHP世界所關注。

PHP內部郵件列表-這個核心開發人員討論語言開發的地方,也在討論把libuv添加到內核中來支持異步編程。對于那些不了解libuv的人來說,可以認為libuv是Node.js用于允許所有異步性的一個庫。

PHP語言本身

雖然async和await這兩個特性現在還不可用,但是在過去的幾年里,PHP語言本身已經有了很多改進。

當我們討論編程語言特性的主題時,讓我們也來談談當今編程語言的發展過程。首先有一個活躍的核心志愿者團隊,他們推動了編程語言的發展。同時開發社區成員可以提出RFC。

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

允許投票的可能有約100人,但是并不要求每個人都對每個RFC投票。核心團隊的成員當然可以投票,因為他們必須維護代碼庫。除了他們之外,還有從PHP社區中單獨挑選出來的人可以投票。這些人包括PHP文檔的維護者、整個PHP項目的貢獻者以及PHP社區中的杰出開發人員。

雖然大多數核心開發都是在自愿的基礎上完成的,但最近JetBrains雇傭了一名核心PHP開發人員Nikita Popov來做全職開發工作。另一個例子是Linux基金會最近決定投資Zend Framework開源框架。這樣的雇傭和收購確保了PHP未來發展的穩定性。

工具

除了PHP核心本身,在過去的幾年里,我們看到了圍繞PHP開發的工具的增加。首先我們想到的是靜態代碼分析工具,像Vimeo團隊開發的Psalm,以及Phan和PHPStan。

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

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

說到轉換(transpiling)。受到 JavaScript 社區的啟發,目前 已經已經有人開始在用戶領域擴展PHP語法。一個名為Pre的項目就是這樣做的,它允許新的PHP語法轉換為普通的 PHP 代碼。

雖然這個想法已經在 JavaScript 中被證明可行,但是只有先提供了適當的IDE和靜態分析支持,它才能在PHP中工作。這是一個非常有趣的想法,但它必須經歷一個成長過程才能稱為“主流”。

結語

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

根據我的經驗,我能夠用它來創建可靠的,可維護的和高質量的軟件。我為之工作的客戶和我一樣,他們對最終的結果很滿意。

雖然用PHP仍然可能做出很多混亂的事情,但如果使用得當和正確的話,我會說這是Web開發的一個很好的選擇。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    20

    文章

    2987

    瀏覽量

    107346
  • PHP
    PHP
    +關注

    關注

    0

    文章

    454

    瀏覽量

    27336

原文標題:比 Java 更具爭議的 PHP,處處留坑?

文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    EtherCAT運動控制卡應用開發教程之Java

    運動控制卡的Java開發及DLL調用
    的頭像 發表于 06-13 14:29 ?134次閱讀
    EtherCAT運動控制卡應用開發教程之<b class='flag-5'>Java</b>

    旋轉花鍵與齒輪傳動哪個更具優勢?

    旋轉花鍵與齒輪傳動哪個更具優勢?
    的頭像 發表于 06-03 18:08 ?115次閱讀
    旋轉花鍵與齒輪傳動哪個<b class='flag-5'>更具</b>優勢?

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

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

    Java應用OOM問題的排查過程

    導讀 本文記錄最近一例Java應用OOM問題的排查過程,希望可以給遇到類似問題的同學提供參考。 前言:此文記錄最近一例Java應用OOM問題的排查過程,希望可以給遇到類似問題的同學提供參考。在本地
    的頭像 發表于 02-12 11:15 ?602次閱讀
    <b class='flag-5'>Java</b>應用OOM問題的排查過程

    高通與Arm許可爭議緩和

    長達數月的爭議出現了緩和。回顧2024年10月,Arm曾威脅要終止與高通的許可協議,這一事件引起了業界的廣泛關注。爭議的背景主要涉及高通對Nuvia的收購以及雙方在許可協議上的分歧。 對于高通而言,此次Arm撤回違約指控無疑是一個積極的信
    的頭像 發表于 02-06 10:15 ?384次閱讀

    華為云 Flexus X 實例下的場景體驗——小企業的福星——最簡單的 php 環境搭建

    ?前言 都是 php 是全世界最好的語言,我也是非常的喜歡,雖然我是搞大數據的,但是 php 在很逗情況下對于個人開發者來說是非常友好的,對于一般小企業來說使用【華為云 Flexus X 實例】來
    的頭像 發表于 01-02 11:59 ?352次閱讀
    華為云 Flexus X 實例下的場景體驗——小企業的福星——最簡單的 <b class='flag-5'>php</b> 環境搭建

    Java 23功能介紹

    Java 23 包含全新和更新的 Java 語言功能、核心 API 以及 JVM,同時適合新的 Java 開發者和高級開發者。從?IntelliJ IDEA 2024.2?開始已支持 Java
    的頭像 發表于 12-04 10:02 ?893次閱讀
    <b class='flag-5'>Java</b> 23功能介紹

    Java集合API的改進介紹

    解答這些問題。 我們將逐步學習 Java 集合類的優化過程,并按版本逐一對比分析。主要討論的焦點將包括 JDK 1.0、1.2、1.4、1.5、1.6、1.8、9、10、11 和 21 版本的 Java 集合功能 Java 集合
    的頭像 發表于 11-22 11:12 ?531次閱讀
    <b class='flag-5'>Java</b>集合API的改進介紹

    對比Python與Java編程語言

    Python與Java都是目前非常流行的編程語言,它們各有其獨特的優勢和適用場景。以下是對這兩種編程語言的對比: 一、語法和易用性 Python 語法簡潔,代碼更易讀,非常適合初學者。 動態類型系統
    的頭像 發表于 11-15 09:31 ?962次閱讀

    基于Java的工具Power Stage Designer

    電子發燒友網站提供《基于Java的工具Power Stage Designer.pdf》資料免費下載
    發表于 11-14 16:01 ?9次下載
    基于<b class='flag-5'>Java</b>的工具Power Stage Designer

    Java中時間戳的使用

    Java中時間戳的使用
    的頭像 發表于 11-06 16:04 ?477次閱讀
    <b class='flag-5'>Java</b>中時間戳的使用

    C語言與Java語言的對比

    C語言和Java語言都是當前編程領域中的重要成員,它們各自具有獨特的優勢和特點,適用于不同的應用場景。以下將從語法特性、內存管理、跨平臺性、性能、應用領域等多個方面對C語言和Java語言進行詳細對比。
    的頭像 發表于 10-29 17:31 ?993次閱讀

    java反編譯能拿到源碼嗎

    Java反編譯是一種將編譯后的Java字節碼(.class文件)轉換回Java源代碼的過程。雖然反編譯可以幫助理解代碼的邏輯和結構,但它并不總是能完美地還原原始源代碼。反編譯工具通常會產生與原始代碼
    的頭像 發表于 09-02 11:03 ?1709次閱讀

    三十分鐘入門基礎Go Java小子版

    語法與 C 相近,但功能上有:內存安全,GC,結構形態及 CSP-style 并發計算。 適用范圍 本篇文章適用于學習過其他面向對象語言(JavaPhp),但沒有學過Go語言的初學者。文章 主要從Go
    的頭像 發表于 08-12 14:32 ?955次閱讀
    三十分鐘入門基礎Go <b class='flag-5'>Java</b>小子版

    華納云:java web和java有什么區別java web和java有什么區別

    Java Web和Java是兩個不同的概念,它們在功能、用途和實現方式上存在一些區別,下面將詳細介紹它們之間的區別。 1. 功能和用途: – Java是一種編程語言,它提供了一種用于開發各種應用程序
    的頭像 發表于 07-16 13:35 ?1401次閱讀
    華納云:<b class='flag-5'>java</b> web和<b class='flag-5'>java</b>有什么區別<b class='flag-5'>java</b> web和<b class='flag-5'>java</b>有什么區別
    主站蜘蛛池模板: 欧美一区二区不卡视频 | 26uuu另类亚洲欧美日本一 | 午夜免费| 美女扒开尿口给男人爽的视频 | 黑人一区二区三区中文字幕 | 亚洲综合在线观看一区www | 手机在线看福利 | 国内精品免费视频自在线 | 国产黄色小视频 | 欧美777 | 狠狠狠狠狠操 | 九九精品免费观看在线 | 伊人网在线观看 | 天堂网在线www资源网 | 在线a亚洲老鸭窝天堂新地址 | 色福利网 | 一级黄色录像毛片 | 五月天免费在线播放 | 色多多入口 | 日本人的色道免费网站 | 亚洲 丝袜 制服 欧美 另类 | 丁香伊人五月综合激激激 | 亚洲 欧美 精品专区 极品 | 小说老卫陈红张敏陈法蓉 | 欧美一级艳片视频免费观看 | www.jizz中国| 日本一区二区三区在线 视频观看免费 | 成人a毛片在线看免费全部播放 | 黄 色 免 费 网站在线观看 | 国产亚洲美女精品久久久久狼 | 无码一区二区三区视频 | 狠狠色成人综合首页 | 国产a三级三级三级 | h视频在线观看网站 | 老师您的兔子好软水好多动漫视频 | 国产精品免费一级在线观看 | 欧美日韩一区二区三区视视频 | 美女扒开腿让男人桶尿口 | 亚洲性后网 | 免费视频一区二区性色 | 性香港xxxxx免费视频播放 |