從5.3到現在的7.1,PHP經歷了幾個里程碑式的版本更新,本文為你展示這些版本到底有何變化。
本文來源於PHP官方文件,這裡並不會展開,送給有心的小夥伴做研究清單。
PHP 5.3
- 新增了名稱空間的支援.
- 新增了靜態晚繫結支援.
- 新增了跳標籤支援.
- 新增了原生的閉包(Lambda/匿名函式)支援.
- 新增了兩個魔術方法, callStatic 和 invoke.
- 新增了 Nowdoc 語法支援, 類似於 Heredoc 語法, 但是包含單引號.
- 使用 Heredoc 來初始化靜態變數和類屬性/常量變為可能.
- 可使用雙引號宣告 Heredoc, 補充了 Nowdoc 語法.
- 可在類外部使用 const 關鍵詞宣告 常量.
- 三元運算操作符有了簡寫形式: ?:.
- HTTP 流包裹器將從 200 到 399 全部的狀態碼都視為成功。
- 動態訪問靜態方法變為可能.
- 異常可以被內嵌.
- 新增了迴圈引用的垃圾回收器並且預設是開啟的.
- mail() 現在支援郵件傳送日誌. (注意: 僅支援通過該函式傳送的郵件.)
PHP 5.4
- 新增支援 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
- 新增 Generators
- 新增 finally 關鍵字
- foreach 現在支援 list()
- empty() 支援任意表示式
- array and string literal dereferencing ¶
- 新的密碼雜湊 API
- 改進 GD
PHP5.6
- 使用表示式定義常量
- 使用 … 運算子定義變長引數函式
- 使用 … 運算子進行引數展開
- 使用 ** 進行冪運算
- use function 以及 use const
- phpdbg
- 預設字元編碼
- php://input 是可重用的了
- 大檔案上傳(現在可以支援大於 2GB 的檔案上傳)
- GMP 支援運算子過載
- 使用 hash_equals() 比較字串避免時序攻擊
- __debugInfo()
- gost-crypto 雜湊演算法
- SSL/TLS 提升
- pgsql 非同步支援
PHP7.0
- 標量型別宣告
- 返回值型別宣告
- null合併運算子
- 太空船操作符(組合比較符)
- 通過 define() 定義常量陣列
- 匿名類
- Unicode codepoint 轉譯語法
- Closure::call()
- 為unserialize()提供過濾
- IntlChar
- 預期
- Group use declarations
- 生成器可以返回表示式
- Generator delegation
- 整數除法函式 intdiv()
- 會話選項
- preg_replace_callback_array()
- CSPRNG Functions
- 可以使用 list() 函式來展開實現了 ArrayAccess 介面的物件
- 其他特性
PHP7.1
- 可為空(Nullable)型別
- Void 函式
- Symmetric array destructuring
- 類常量可見性
- iterable 偽類
- 多異常捕獲處理
- list()現在支援鍵名
- 支援為負的字串偏移量
- ext/openssl 支援 AEAD
- 通過 Closure::fromCallable() 將callables轉為閉包
- 非同步訊號處理
- HTTP/2 server push support in ext/curl
有多少不會的?幹!!!