http://php.net/releases/7_3_0.php
列出一部分變更:
- 整體效能提升
- https://goo.gl/E3W9dA
民間測試認為比 PHP 7.2 提升 10%,比 7.0 提升 30%
- 新增 is_countable()
- 因應 7.2 count() 嚴謹化的需求
- JSON_THROW_ON_ERROR
- json_decode() 失敗的時候可以走 exception 流程,不用呼叫
json_last_error() / json_last_error_msg()
- list() 可以把值指給 reference
- list(&$a, &$b) = $someArray; // PHP 7.2 之前會噴掉,7.3 OK
- [&$a, &$b] = $someArray; // 這樣也行
- array_key_first(), array_key_last()
- 以前只能用 reset() / end()
現在可以取陣列的頭尾值而不用影響內部指標啦
- constant 區分大小寫
- define FOO 然後拿 foo 來用的話會噴 warning,預期 PHP 8 一律分大小寫
- defined() 不會噴 warning
- true / false / null 依然不分大小寫,預期 PHP 8 變成語言保留字
- magic constant (例如 __FILE__ )都是語言保留字,不分大小寫
- PHP symbol 大小寫規則統一化的一步
- 增加 SameSite cookie 支援
- PCRE 升級 PCRE2
- 效能提升,大多數人沒差但細節行為改變可能會影響少數人
- 函數的最後一個參數後面可以有逗點
- diff 救星
- heredoc / nowdoc 可以縮排
完整版請參照
- http://php.net/ChangeLog-7.php#7.3.0
- https://github.com/php/php-src/blob/43329e85e/UPGRADING