這份整理拖太久了,到 PHP 8.2 都上線了還沒寫完,所以就整理到 7.x 結束吧。
PHP 從約 5.2 版就開始慢慢的加上一些重大的改變,像是 PHP v5.3 開始支援 `namespace` 之後,開始有了 composer 各種套件系統的發展。這些改變讓 PHP 的開發和維護更方便、更簡單。以下記錄各版本重要的功能,以便在更新程式時可以更快的了解有什麼需要留意的事項。
備註:我沒用過 PHP 4.x,如果你還在用的話,請多保重 ….
5.1
- PDO 預設安裝並自動啟用。
5.2
- JSON extension 預設安裝並自動啟用
- Zend engine 改進記憶體管理,並解決多個效能問題
5.3
- 開始支援 namespace
- 支援 closures (lambda function / anonymous function)
- 支援 late static binding
- PHP Phar
- 支援 ext-mysqlnd
5.4
- 支援 Trait
- 支援 array short syntax (可以使用
[]
來表示 array) - build-in server (透過
php -S
啟動) - 移除 register globals 和 magic quote 功能
- 預設文字編碼改為
UTF-8
5.5
支援使用
::class
來取得類別的完整 namespace- 支援 ext-opcache
- 支援 generators
- 在 `try … catch` 中支援 finally
5.5
- 靜態變數宣告中,支援使用運算式 (如
const MAX = 4 * ITEM_AMOUNT
) - function 的 argument 支援
...
運算子 - 支援
**
(次方) 運算子 - 支援
use
來 import function / class - 支援多種 I/O stream protocol (
php://stdin
,php://input
)
備註:
- PHP 5.x 在 2019-01-10 就終止支援、維護
- PHP 5.6 之後是 PHP 7.0,如果看到有人介紹 PHP 6.x 可以不要理他 XD
7.0
- Zend engine 重構以後,PHP 7 將比 5.x 的執行速度快一倍
- 支援 64 bit 環境
- 更安全的亂數產生器可以定義回傳值的 scalar type
- 支援 anonymous class
7.1
- 回傳值的資料型態可設定為 void 和 return null
- 在類別中定義的 constant 可以定義 visibility
try ... catch
語法中,開始支援多種不同類型的 exception- 其他
7.2
- Type hint 除了 scalar types 以外,也開始支援類別名稱,如
function setQueue(\Zeroplex\Queue $queue)
- Hash 演算法支援
Argon2
,另外 Mcrypt extension 則移除不再支援 - 支援
ext-sodium
(較快、較安全的加密演算法
7.3
- Heredoc 的結尾不再需要在每行的第一個字元,可縮排
7.4
- Class property 可以定義資料型別,如:
private string $url;
- 支援 Arrow Function (簡潔的 Closure 語法)
- 支援 Weak reference
- 在 OPcache 新增 preloading 功能
s/多太久/拖太久/g
s/支持/支援/g
s/運行/執行/g
s/環傳值/回傳值/g
s/再回傳/在回傳/g
謝謝小吳幫忙!