即将进行新特性冻结,PHP 8.2 最新进展,已发布 Alhpa2

科技资讯 投稿 42300 0 评论

即将进行新特性冻结,PHP 8.2 最新进展,已发布 Alhpa2

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 作为独立的返回值也是有意义的。

已实现:允许 true 作为独立类型

早在之前的文章中,小编就提到过,false 可以作为独立的类型(并且进行声明),但是 true 却不可以。此提案建议添加 true 作为独立类型,使 PHP 的类型系统根据表现力。

已通过:随机扩展 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 的箭头函数效果一样))

其他

文章由 PHP 武器库小编根据 https://thephp.foundation/blog/2022/06/30/php-core-roundup-3/ 翻译整理而成,有问题请联系。

提到的文章链接:

  • 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 将有哪些新东西?

  • 提案:将 false 和 null 作为独立类型( https://wiki.php.net/rfc/null-false-standalone-types )

  • 对于(将 false 和 null 作为独立类型)提案的开发者访谈

  • 提案:将 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 )

原文标题:PHP8.2 最新进展,已发布 Alhpa2,即将进行新特性冻结

原文平台:PHP 武器库

版权声明:本文由(PHP 武器库官网)原创和首发,所有权利归 phpreturn(PHP 武器库)所有,本站允许任何形式的转载 / 引用文章,但必须同时注明出处。

编程笔记 » 即将进行新特性冻结,PHP 8.2 最新进展,已发布 Alhpa2

赞同 (32) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽