PHP 8.1 正式发布:送给开发者枚举、纤程与只读属性等新礼物
即使经过了 26 年的发展和各个年轻强劲的竞争对手,PHP 仍然对世界各地的大部分网站起着至关重要的作用。
为了保持先进性、让开发者拥有真正需要的东西以及适应 Web 应用程序的未来,PHP 开发团队刚刚(11月25日)发布了8.1 正式版,其中包含了大量开发者要求的实用且不错的特性(https://www.php.net/index.php#id2021-11-25-1)。
PHP 8.1最令人期待的新增功能之一是enumerations,目前我们姑且称为一种枚举类型,具有固定数量的值列表,这种方式已经在 C 和 Python 等语言中可用。
它通过enum关键字声明,关键字后面跟着它的名字,语法与类和接口的语法非常相似。enum包括声明字符串或整数(=支持的枚举)、扩展类和实现接口的选项,能帮助开发者写出更具可读性的代码。
从 PHP 8.1 开始,该语言放宽了对初始化器表达式中新表达式的限制,并允许它们在参数中的默认值、属性参数、静态变量初始化器和全局常量中使用。
该更新还包含“第一层只读属性”,开发者可以“直接公开公共只读属性,而不必担心类变量会被外部修改破坏”。它只能初始化一次,且只能在声明它的范围内初始化,否则属性将引发异常抛出。
某个实用函数永远不会返回值,但是能够抛出异常或终止请求。开发者可以通过声明该函数为新的返回类型或静态分析器一直共享这些信息(使用never关键字)。如果函数的输入为多种类型,可以通过交集类型来运行。
要从特定数组查找键值是否都是从 0 开始且为连续整数的程序员可以用array_is_list这样一个新函数来搞定,将字符串的键值解包到数组中也不再被禁止。
其他增强功能包括fsyncPHP 核心中的实现、测试常量是否为 final 的方法以及将 Fibers 引入。
和 Ruby 语言有点类似,PHP Fibers 可用于创建非阻塞执行上下文,尽管 PHP 以往版本中已经有针对用于编写异步 PHP 代码的库和框架,如Swoole。
PHP 8.1有一小部分弃用列表,可在 PHP wiki 中查看。值得注意的是,将 null 传递给不可为 null 的标量参数或将非整数兼容的 float 隐式转换为 int 现在将出现警告性错误。
PHP 8.1 这一版本是在宣布成立 PHP 基金会后几天正式发布。
PHP基金会是一家非营利组织。它旨在通过为PHP语言贡献者确保工资来确保语言的继续开发——但是“当前的 RFC 流程不会改变,语言的决策将始终留给 PHP Internals 社区。”
这一步已经讨论了一段时间,但是在主要贡献者之一Nikita决定放弃全职 PHP 内核开发角色,专注于基础设施项目 LLVM 之后的刺激,这一步才正式启动。
PHP基金会的创始成员包括 Acquia、Automattic、Craft CMS、JetBrains、Laravel、PrestaShop、Private Packagist、Symfony、Todeways 和 Zend。
作者:场长
相关阅读:
关于21CTO.com
21CTO.com是开发者的学习与服务平台。
我们为开发者提供高质量的资讯、学习以及工具等产品;
帮助企业快速对接开发者,包括人才招聘,数字化转型咨询,软件研发等服务。
网站地址:www.21cto.com
投稿邮箱:info@21cto.com
联系微信:13426109659
扫描二维码关注21CTO微信号