2019年的「現代PHP」——咱們依然愛你

PHP的陣營向來有兩種聲音,一個說「PHP是世界上最好的語言」,一個說「PHP出於糟糕的設計」,如今對於說這些的,其實咱們正常人早就麻木了,這裏的正常人,指的是正常工做的程序員,由於咱們知道,只有啥都不懂,喜歡打嘴炮的新手,纔去跟風這些說法,真正忙的人沒工夫理會這些,咱們只想把事情作好。php

固然,更重要的是,隨着咱們的成長,PHP也在成長,今天的PHP已經不是過去的那個PHP了,PHP自從5.*時代已經進化了不少,咱們愈來愈喜歡用「現代PHP」來稱呼它。vue

固然了,任何一個語言都有其糟糕的一面,PHP也不例外:不少核心函數依然有不統一的方法,仍然有使人困惑的配置參數,最難辦的是,依然有大量的開發者在寫着糟糕的代碼,他們可能不得不這樣,或者單純不知道怎樣能夠寫的更好。java

今天,咱們想用最新的數據和視角,來看看PHP 2019的現狀,看看可否刨除些以往的偏見,或者給咱們增添更多的信心。咱們想更多關注那些PHP已經改變了的方面,更多關注PHP如何讓咱們可以寫出簡潔、易於維護的代碼。相信,若是以往PHP曾給你留下過很差的印象,今天你會驚訝於PHP這些年來的改進和完善:node

  • PHP語言自己處於活躍開發階段,每一年都會發佈一個新的大版本
  • 從PHP5後,性能翻了兩倍,若是不說是三倍的話
  • PHP有異常活躍和豐富的框架、組件和平臺生態
  • 過去幾年裏,PHP添加了大量新的特性,語言自己在不斷演進
  • 不少相關工具在過去幾年裏日漸成熟,而且持續成長

PHP歷史回顧

{id="history"}python

PHP如今的最新版本是7.3, 7.4將會在2019年底發佈,PHP 8.0是7.4以後的下個版本。laravel

自從5.*時代以來,核心團隊儘可能保持着年度版本發佈的頻率,而且在過去的四年裏成功作到了這一點。git

通常來講,每個新的版本都會有兩年的活躍支持,而後再有一年的安全支持。這樣作的目的,是想促使PHP開發者們儘可能跟上最新的版本,由於每一年更新一下版本,只涉及小的改動,這就比跨越好幾個版本去升級要容易的多,好比說一會兒從5.4升到7.0,這期間你就沒法肯定會經歷什麼了。程序員

若是你想看PHP現階段的支持週期,能夠看看這個官方連接://www.php.net/supported-versions.phpgithub

PHP的性能

{id="performance"}web

在5.*的時代,PHP的性能只能往好了算是平均水平,可是到了7.0,大量的PHP核心代碼進行了從頭的重寫,最終帶來了兩倍或三倍的性能提高。PHP之父 Rasmus Lerdorf 曾在2018年說,PHP 7.0刪掉了原先三分之一的代碼,同時保持着對以前版本的兼容,沒有所以丟掉任何功能,並且這只是重構,尚未搞JIT和HHVM,沒開始用特殊或極端的性能提高手段。由此,咱們也徹底能夠預期,將來版本的PHP,依然有巨大的性能提高空間。

固然空說無憑,能夠看一些測試數據,慶幸的是不少人都已經測評過PHP的性能了

file

file

file

若是你想看更多PHP框架或cms在不一樣版本PHP之間的測評數據,能夠看看這個文章://kinsta.com/blog/php-benchmarks/

因爲PHP 7的巨大性能提高,PHP的不少web程序和框架,就能夠和其餘語言的web框架進行對比了,甚至在不少地方,還要比其餘語言的要更好。一樣的,能夠看看下面的詳盡測評:

file

這是一個框架延遲性的測評,能夠看到PHP的流行框架是處在絕對前列的,在這方面java、go、python的一些框架,不少都是墊底的,尤爲是國內在亂追捧的django直接墊底。

file

這是每秒請求數據,PHP依然要比rails、django、flask這些要高的多,它們依然幾乎是墊底的,因此就很不理解國內那些忽悠小白拿django搞web開發的了,請珍重。

想看更多web框架測評數據的,能夠看看這個//github.com/the-benchmarker/web-frameworks倉庫,上面兩個表格截圖均是來自這裏。

固然了,PHP框架確定比不了C語言的,以及新一代C,也即Rust,但他們廣泛比Rails和Django這些要好很是多,也可以跟ExpressJS相對比。

框架和生態

{id="frameworks"}

原來咱們提PHP,就必須得提wordpress,全球60%以上的網站都曾是wordpress的,固然如今這個數據確定依然不低。可是如今,對任何專業的PHP開發者來講,wordpress已經再也不可以表明PHP的生態了,絕對不能。

通常而言,如今PHP界主要有兩大主流PHP框架:Symfony 和 Laravel,而後還有一些小一些、不那麼流行的。固然了,還有Zend, Yii, Cake, Code Igniter這些,可是若是你想知道現代PHP開發的真實樣子,你最好擅長這兩個主流之一。

這兩個框架都有其從組件到產品的龐大生態,不管是後臺系統、CRM系統,仍是單獨的組件,從CI到側寫工具,數不盡的web服務,好比sockets服務、隊列管理服務、支付集成方案等。說實在的,根本太多了,沒法列舉。

固然,這兩個框架都是須要進行定製和開發的,若是你只是須要個純淨的內容管理系統,那麼WordPress或者CraftCMS依然是不錯的選擇,它們自己也在愈來愈好。

要觀察PHP目前生態的一個方法是,去看看Packagist這個站點,也即PHP組件的官方倉庫平臺。它這些年經歷了爆炸性增加,天天有2500百萬的下載量,這樣的一個龐大的活躍量,誰也不能說PHP是弱勢的,只是搞小項目的。

下圖是一個來自Packagist的組件下載增加趨勢:

file

除了框架和CMS,過去幾年裏,咱們也能看到異步框架的成長。有不少框架或服務,用PHP或其它語言寫的,可以容許咱們運行真正的異步PHP,一些知名的包括Swoole, Amp 和 ReactPHP。

因爲咱們已經開始了異步世界的探險,例如web sockets或者有大量IO的應用,這些在PHP世界裏愈來愈是個事兒了,愈來愈相關了。

固然了,在PHP核心開發團隊的內部郵件列表裏,已經在討論將libuv添加到PHP核心中,libuv就是nodejs異步功能所依賴的底層庫。

目前的PHP語言自己

{id="itself"}

雖然目前async和await功能還沒添加上,可是過去幾年間,不少改進都加到了PHP裏,下面是一個不徹底的PHP新特性列表:

除了語言特性,讓咱們也來看看現在PHP的核心開發過程:有一個活躍的核心志願者團隊,他們推進着PHP語言開發和前進,同時社區成員也能夠提出RFC。

接下來,這些RFC 會在「內部」郵件列表中討論,郵件列表能夠在線閱讀。在新的語言特性被添加以前,必須進行投票。只有獲得三分之二支持的RFC才被容許添加進核心。

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

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

工具

{id="tools"}

除了PHP核心自己,在過去的幾年裏,咱們也看到了相關工具的增長。首先咱們想到的是靜態代碼分析工具,像Vimeo團隊開發的Psalm,以及PhanPHPStan

這些工具將靜態分析你的PHP代碼並報告任何類型錯誤,以及可能致使的bug等等。在某種程度上,它們提供的功能能夠與TypeScript相媲美,儘管PHP如今不提供編譯轉換(transpile),因此不能用自定義語法。

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

說到編譯轉換(transpiling),這是受到JavaScript 社區的啓發,目前 已經有人開始自行擴展PHP語法格式,一個名爲Pre的項目就是這樣作的,它容許新的PHP語法格式轉換爲普通的 PHP 代碼。

雖然這個想法已經在 JavaScript 中被證實可行,可是隻有先提供了適當的IDE和靜態分析支持,它才能在PHP中工做。這是一個很是有趣的想法,但它必須經歷一個成長過程才能稱爲「主流」。

結語與課程推薦

{id="conclusion"}

固然了,語言只是個工具,而好的編程實踐是與具體的某一門語言無關的,糟糕的代碼不管放到哪一個框架和語言裏,都依然是糟糕的代碼。固然這一點,可能在PHP這裏更突出一些,不少人依然在用PHP亂搞,尤爲是在國內,但願他們能快速成長,經歷一些嚴肅系統的學習,而不是一直本身亂倒騰,或者知足於網上些免費但糟糕的教程,就覺得那是真正的編程自己。

做爲嚴肅的PHP開發者,尤爲是現現在藉助於laravel,咱們能夠很自豪地說,咱們可以用PHP來開發優雅的、可靠的、可維護的和高質量的web應用,咱們的僱主與客戶也都同樣,他們對最終的結果都很是滿意。

若是你是一個web編程愛好者,還在觀望是否要用PHP,或者在忍受一些PHP的糟糕代碼,或者乾脆不知道怎樣才能接觸到簡潔優雅的現代PHP,包括說你已經知道laravel了,可是仍是沒法體驗起真正的優雅,那麼咱們極力向你推薦這門國內最好的laravel入門兼實踐課程《Laravel優雅實戰入門:第二版》

file

課程是從16年就開始開發的,歷時兩年,目前已經升級到了第二版,用的是新近的laravel 5.7,徹底兼容最新的laravel 5.8,最關鍵的是,這裏面教的,徹底都是最正宗最優雅的laravel用法,到處教你如何用一兩行代碼解決正常的邏輯,讓你從一開始就養成好的代碼習慣,今後跟亂糟糟的代碼說再見。兩年裏,咱們的課程已經幫助上千名小夥伴走上laravel優雅之路,不少小夥伴由於這個課程找到了本身滿意的工做,下一個會是你嗎?

固然了,若是你以爲本身已經有足夠的基礎了,laravel用的像模像樣了,也能夠關注咱們進階課程,咱們還有laravel和vuejs結合開發的課程《Laravel&Vue深度整合實戰第二版》

file

更有很是高級的laravel源碼分析兼實戰課程《Laravel底層實戰兼核心源碼解析》

file

這還不止的,更多精品好課歡迎到個人網易課堂主頁查看【霹靂神主頁】

更進一步的,若是你更厲害,或者更願意學習,未來想成爲行業大神,那麼咱們還給你準備了更高級的【國際IT專場會議】,在這裏咱們爲你翻譯整理了IT界的各大國際會議,PHP的做者、laravel的做者、symfony的做者等等國際頂尖大牛親自給你講解IT技術,多學習幾個之後,你以爲本身離大神還遠嗎?專場連接:www.pilishen.com/casts

file
file

本文翻譯和改編自//stitcher.io/blog/php-in-2019

相關文章
相關標籤/搜索