PHP8.2最新進展,即將進行新特性凍結!

2022-07-04 14:02:17
PHP基金會每月都會在部落格上發表當月的PHP核心的最新進展。本文介紹的是6月的進展情況。

PHP8.2 的 QA 版本 和 特性凍結

PHP8.2計劃於11 月 24 日 釋出,PHP的版本發行管理員們已經發布了PHP8.2的Alpha 1和Alpha 2的版本。

這些Alpha 版本不適合用於生產環境,而是用作測試環境和本地開發的版本節點。

已經編譯的windows版本可以在 https://windows.php.net/qa/ 上找到,Docker 映象 可以在Docker Hub 上找到,原始碼在Github 上的 php/php-src中,可以自行編譯,在 Homebrew 上,PHP 8.2-dev 軟體包可從 shivammathur/php 檢視相關指令。

7 月 19 日 是 PHP 8.2 特性凍結日期,在此之後PHP8.2不在接收新的特性建議。PHP的新特性都有2周的討論期和2周的投票期。在特性凍結之前必須對所有的RFC(提案)進行投票。

RFC的更新

上次PHP武器庫小編在PHP8.2將會有哪些新東西?中介紹了一部分已經通過的新特性,如今又有一些新特性被投票通過,還有一些正在進行中。

已實現:允許false和null作為獨立型別

在之前的文章中已經介紹過,有些開發者並不看好這件事,認為false作為獨立型別並沒有什麼用。在這之前false只能和其他型別一起聯合宣告。

你可以在PHP的播客中瞭解到對開發者George Peter Banyard的訪談。

https://phpinternals.news/99 ,他提到大量的傳統函數會在內部返回false和丟擲異常。並不會返回有實際意義的東西,返回false也許是為了中斷當前函數程式碼的執行。所以使用false作為獨立的返回值也是有意義的。

已通過:隨機擴充套件5.x

是 Go Kudo 提出的 RFC 的第五次迭代,改進PHP的亂數生成器,並且將一些列的改動移動到單獨的擴充套件中。

已通過:為is_callable新增棄用通知,並新增callable型別

PHP以後將棄用is_callable函數的部分表現,但在PHP8.2中只會產生棄用通知。這樣做的原因,簡單來講,is_callable使用起來語法混亂。但注意,is_callable只是放棄了判斷字串的用法,比如is_callable(‘myFunction’),對於其他型別仍然是可用的,比如一個變數代表的是一個回撥函數。

已通過:析取正規化型別

該提案提議PHP支援更多的型別宣告組合,比如:

(A&B&D)|int|null

就是說該值有可能是null,有可能是整型,也有可能是實現了A介面、B介面、D介面的物件。

對此可以檢視提案詳情:

https://wiki.php.net/rfc/dnf_types

更多的RFC

還有更多討論中的提案,下面做一個簡單的介紹和連結。

討論中:新的CURL RUL API(增加curl類和url類)

討論中:const宣告時使用列舉屬性值

討論中:PDO程式中特性的子類(能夠提高對sqlite、pgsql的支援)

討論中:使 iterator_*() 系列接受所有可迭代物件(目前只接受Traversables,但不接受array)

討論中:在列舉中實現自動Stringable(但仍然不能自定義覆蓋)

討論中:短閉包(匿名函數想要使用外部變數必須使用use宣告,短閉包可以解決這樣的問題(,跟js的箭頭函數效果一樣))

提到的文章連結:

  • PHP8.2的windows版本( https://windows.php.net/qa/ )

  • PHP8.2的docker 映象( https://hub.docker.com/_/php?tab=tags&page=1&name=8.2.0 )

  • PHP8.2的原始碼託管地址( https://github.com/php/php-src )

  • PHP8.2的Mac工具Homebrew 安裝( https://github.com/shivammathur/homebrew-php )

  • PHP8.2將有哪些新東西?( https://phpreturn.com/index/a626a74a300dc5.html )

  • 提案:將false和null作為獨立型別( https://wiki.php.net/rfc/null-false-standalone-types )

  • 對於(將false和null作為獨立型別)提案的開發者訪談( https://phpinternals.news/99 )

  • 提案:將true作為獨立型別( https://wiki.php.net/rfc/true-type )

  • 提案:對is_callable的棄用通知( https://wiki.php.net/rfc/partially-supported-callables-expand-deprecation-notices )

  • 提案:析取正規化型別( https://wiki.php.net/rfc/dnf_types )

  • 提案:新的CURL URL API ( https://wiki.php.net/rfc/curl-url-api )

  • 提案:const宣告使用列舉屬性值( https://wiki.php.net/rfc/fetch_property_in_const_expressions )

  • 提案:PDO的特定子類( https://wiki.php.net/rfc/pdo_driver_specific_subclasses )

  • 提案:擴大iterator的可迭代多項( https://wiki.php.net/rfc/iterator_xyz_accept_array )

  • 提案:在沒居中實現自動Stringable( https://wiki.php.net/rfc/auto-implement_stringable_for_string_backed_enums )

  • 提案:短閉包( https://wiki.php.net/rfc/auto-capture-closure )

關於PHP更多合併說明可以檢視:https://thephp.foundation/blog/2022/06/30/php-core-roundup-3/#merged-prs-and-commits

英文原文地址:https://thephp.foundation/blog/2022/06/30/php-core-roundup-3/

轉載地址:https://phpreturn.com/index/a62be479ae1e02.html

原文平臺:PHP武器庫

版權宣告:本文由phpreturn.com(PHP武器庫官網)原創和首發,所有權利歸phpreturn(PHP武器庫)所有,本站允許任何形式的轉載/參照文章,但必須同時註明出處。

推薦學習:《》

以上就是PHP8.2最新進展,即將進行新特性凍結!的詳細內容,更多請關注TW511.COM其它相關文章!