PHP最近的6個版本到底多了啥?

阿北哥ya發表於2019-03-04

從5.3到現在的7.1,PHP經歷了幾個里程碑式的版本更新,本文為你展示這些版本到底有何變化。

本文來源於PHP官方文件,這裡並不會展開,送給有心的小夥伴做研究清單。

PHP 5.3

secure.php.net/manual/zh/m…

  • 新增了名稱空間的支援.
  • 新增了靜態晚繫結支援.
  • 新增了跳標籤支援.
  • 新增了原生的閉包(Lambda/匿名函式)支援.
  • 新增了兩個魔術方法, callStatic 和 invoke.
  • 新增了 Nowdoc 語法支援, 類似於 Heredoc 語法, 但是包含單引號.
  • 使用 Heredoc 來初始化靜態變數和類屬性/常量變為可能.
  • 可使用雙引號宣告 Heredoc, 補充了 Nowdoc 語法.
  • 可在類外部使用 const 關鍵詞宣告 常量.
  • 三元運算操作符有了簡寫形式: ?:.
  • HTTP 流包裹器將從 200 到 399 全部的狀態碼都視為成功。
  • 動態訪問靜態方法變為可能.
  • 異常可以被內嵌.
  • 新增了迴圈引用的垃圾回收器並且預設是開啟的.
  • mail() 現在支援郵件傳送日誌. (注意: 僅支援通過該函式傳送的郵件.)

PHP 5.4

secure.php.net/manual/zh/m…

  • 新增支援 traits 。
  • 新增短陣列語法,比如 $a = [1, 2, 3, 4]; 或 $a = [`one` => 1, `two` => 2, `three` => 3, `four` => 4]; 。
  • 新增支援對函式返回陣列的成員訪問解析,例如 foo()[0] 。
  • 現在 閉包 支援 $this 。
  • 現在不管是否設定 short_open_tag php.ini 選項,<?= 將總是可用。
  • 新增在例項化時訪問類成員,例如: (new Foo)->bar() 。
  • 現在支援 Class::{expr}() 語法。
  • 新增二進位制直接量,例如:0b001001101 。
  • 改進解析錯誤資訊和不相容引數的警告。
  • SESSION 擴充套件現在能追蹤檔案的 上傳進度 。
  • 內建用於開發的 CLI 模式的 web server 。

PHP5.5

secure.php.net/manual/zh/m…

  • 新增 Generators
  • 新增 finally 關鍵字
  • foreach 現在支援 list()
  • empty() 支援任意表示式
  • array and string literal dereferencing ¶
  • 新的密碼雜湊 API
  • 改進 GD

PHP5.6

secure.php.net/manual/zh/m…

  • 使用表示式定義常量
  • 使用 … 運算子定義變長引數函式
  • 使用 … 運算子進行引數展開
  • 使用 ** 進行冪運算
  • use function 以及 use const
  • phpdbg
  • 預設字元編碼
  • php://input 是可重用的了
  • 大檔案上傳(現在可以支援大於 2GB 的檔案上傳)
  • GMP 支援運算子過載
  • 使用 hash_equals() 比較字串避免時序攻擊
  • __debugInfo()
  • gost-crypto 雜湊演算法
  • SSL/TLS 提升
  • pgsql 非同步支援

PHP7.0

secure.php.net/manual/zh/m…

  • 標量型別宣告
  • 返回值型別宣告
  • null合併運算子
  • 太空船操作符(組合比較符)
  • 通過 define() 定義常量陣列
  • 匿名類
  • Unicode codepoint 轉譯語法
  • Closure::call()
  • 為unserialize()提供過濾
  • IntlChar
  • 預期
  • Group use declarations
  • 生成器可以返回表示式
  • Generator delegation
  • 整數除法函式 intdiv()
  • 會話選項
  • preg_replace_callback_array()
  • CSPRNG Functions
  • 可以使用 list() 函式來展開實現了 ArrayAccess 介面的物件
  • 其他特性

PHP7.1

secure.php.net/manual/zh/m…

  • 可為空(Nullable)型別
  • Void 函式
  • Symmetric array destructuring
  • 類常量可見性
  • iterable 偽類
  • 多異常捕獲處理
  • list()現在支援鍵名
  • 支援為負的字串偏移量
  • ext/openssl 支援 AEAD
  • 通過 Closure::fromCallable() 將callables轉為閉包
  • 非同步訊號處理
  • HTTP/2 server push support in ext/curl

有多少不會的?幹!!!

相關文章