iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP 8.3 中的新功能
  • 461
分享到

PHP 8.3 中的新功能

php开发语言 2023-10-21 16:10:55 461人浏览 安东尼
摘要

PHP 8.3 将于2023 年 11 月 23 日发布;它对只读类、新JSON_validate()函数、最近添加的Randomizer类、堆栈溢出检测等进行了改进。 在本文中,我们将逐一介绍所有功

PHP 8.3 将于2023 年 11 月 23 日发布;它对只读类、新JSON_validate()函数、最近添加的Randomizer类、堆栈溢出检测等进行了改进。

在本文中,我们将逐一介绍所有功能、性能改进、更改和弃用。
只读修改征求意见稿
此 RFC 提出了两个更改,只有一个被接受:能够在克隆时重新初始化只读属性。这听起来可能很重要,但此 RFC 仅解决了一个非常具体(但重要)的边缘情况:覆盖 中的属性值__clone(),以允许深度克隆只读属性。

readonly class Post
{
public function __construct(
public DateTime $createdAt,
) {}

public function __clone(){    $this->createdAt = new DateTime();     // This is allowed,    // even though `createdAt` is a readonly property.}

}
您可以在此处阅读有关此 RFC 和一些旁注的深入文章。

#匿名只读类升级中
以前,您无法将匿名类标记为只读。这在 php 8.3 中已修复:

$class = new readonly class {
public function __construct(
public string $foo = ‘bar’,
) {}
};
#新json_validate()功能征求意见稿
以前,验证字符串是否为有效 JSON 的唯一方法是对其进行解码并检测是否抛出任何错误。json_validate()如果您只需要知道输入是否为有效的 JSON,这个新函数就很有用,因为与解码字符串相比,它使用的内存更少。

json_validate(string $json, int $depth = 512, int $flags = 0): bool
#Randomizer加法征求意见稿
PHP 8.2 添加了新的Randomizer类。本次更新带来了一些小的补充:

Randomizer::getBytesFromString(string $string, int $length): string
此方法允许您生成具有给定长度的字符串,该字符串由从给定字符串中随机选择的字节组成。

Randomizer::getFloat(
float $min,
float $max,
IntervalBoundary b o u n d a r y = I n t e r v a l B o u n d a r y : : C l o s e d O p e n ) : f l o a t g e t F l o a t ( ) boundary = IntervalBoundary::ClosedOpen ): float getFloat() boundary=IntervalBoundary::ClosedOpen):floatgetFloat()min返回一个介于和之间的浮点数 m a x 。由于枚举,您可以定义是否 max。由于枚举,您可以定义是否 max。由于枚举,您可以定义是否min以及应该包括在内。表示包含该值,而表示不包含该值。$maxIntervalBoundaryClosedOpen

Randomizer::nextFloat(): float {}
最后,nextFloat()是 的简写,换句话说:它会给你一个介于 0 和 1 之间的随机浮点数,其中 1 被排除在外。getFloat(0, 1, IntervalBoundary::ClosedOpen)

#动态类常量获取征求意见稿
PHP 8.3 允许您使用更动态的语法获取常量:

class Foo
{
const BAR = ‘bar’;
}

$name = ‘BAR’;

// Instead of this:
constant(Foo::class . ‘::’ . $name);

// You can now do this:
Foo::{$name};
#更合适的日期/时间例外征求意见稿 打破
在许多情况下,PHP 会简单地抛出一个ExceptionorError对象;或者在处理日期和时间时出现问题时发出警告或错误。此 RFC 遍历了所有这些边缘情况,并为它们添加了适当的、专用的例外。

我们现在有DateMalfORMedIntervalStringException、DateInvalidOperationException和 之类的例外DateRangeError。

通常,这些添加不会破坏任何代码,因为这些新添加的异常和错误是泛型Exception和Error类的子类。但是,此 RFC 附带了三个小的破坏性更改:

现在Epoch doesn’t fit in a PHP integer返回一个 newDateRangeError而不是 generic ValueError,它不子类化。这只是 32 位平台的问题。
Only non-special relative time specifications are supported for subtraction带有和 的警告变为新的.DateTime::sub()date_sub()DateInvalidOperationException
在与 OO 接口一起使用时,在解析错误/损坏的字符串时创建的Unknown or bad format (%s) at position %d (%c): %s和警告现在将抛出一个新的,而不是显示警告并返回 false。String ‘%s’ contains non-relative elementsDateIntervalDateMalformedIntervalStringException
#改进的unserialize()错误处理征求意见稿
unserialize()E_WARNING现在在遇到问题时总是发出一个,而不是有时发出一个E_NOTICE.

此 RFC 还建议在运行时添加更多异常unserialize(),但该部分未被接受。

#堆栈溢出检测公关
PHP 8.3 添加了两个新的 ini 指令,名为zend.max_allowed_stack_size和zend.reserved_stack_size。接近溢出调用堆栈的程序现在可能会抛出错误zend.max_allowed_stack_size当使用 more than和之间的区别zend.reserved_stack_size。

此功能的好处是堆栈溢出引起的分段错误不会再导致段错误,从而使调试变得更加容易。

的默认值zend.max_allowed_stack_size是0,这意味着 PHP 将自动确定一个值。您还可以提供-1以指示没有限制或特定字节数。该zend.reserved_stack_size指令用于确定“缓冲区”,以便 PHP 仍然能够抛出错误而不是实际耗尽内存。这里的值应该是字节数,但是 PHP 会为你确定一个合理的默认值,所以你不一定需要设置它,除非你遇到特定程序的边缘情况。

最后一点,对于纤程,现有fiber.stack_size指令用作最大允许堆栈大小。

zend.max_allowed_stack_size=128K
#小而显着的变化
并非 PHP 中的每个更改都通过 RFC 流程。事实上,大部分更改包括维护和错误修复,并且不需要 RFC。所有这些更改都列在升级文档中。我将列出一些最突出的,但如果您想了解最微小的细节,您一定要通读整个列表。

使用FFI时,返回类型为voidnow returnnull而不是 return 的C 函数FFI\CData:void
posix_getrlimit()现在采用可选$res参数以允许获取单个资源限制。
GC_status()有四个新字段:running、protected、full和buffer_size。
class_alias()现在支持创建内部类的别名。
Mysqli_poll()现在ValueError在传递 read nor error 参数时引发 a。
array_pad()现在仅受数组可以包含的最大元素数限制。以前,一次最多只能添加 1048576 个元素。
新的 posix 函数:posix_sysconf()、posix_pathconf()、posix_fpathconf()和posix_eaccess()
proc_get_status()多次执行现在将始终在 posix 系统上返回正确的值。
暂时就是这些,但是这个列表会随着时间的推移而增加。
在这里插入图片描述

来源地址:https://blog.csdn.net/qq_52010446/article/details/130252518

--结束END--

本文标题: PHP 8.3 中的新功能

本文链接: https://www.lsjlt.com/news/433841.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP 8.3 中的新功能
    PHP 8.3 将于2023 年 11 月 23 日发布;它对只读类、新json_validate()函数、最近添加的Randomizer类、堆栈溢出检测等进行了改进。 在本文中,我们将逐一介绍所有功...
    99+
    2023-10-21
    php 开发语言
  • PHP 8.3新版本即将发布:全新功能一览
    PHP 8.3 将于 2023 年 11 月 23 日更新。它将添加类型化类常量、一个用于json_validate检查 json 有效负载的新辅助函数以及对 Randomizer 类、读取 ini 配置等的一些小改进。PHP 团队将于本月...
    99+
    2023-11-10
    php
  • PHP 8 中的那些新功能
    在本篇文章中我们来了解新的 PHP 8 版本中的新功能和变化。 期待已久的 PHP 8.0 GA 版本计划于 2020 年 11 月 26 日发布。让我们来看看 PHP 8 中的一些新增功能。 ...
    99+
    2024-02-27
  • PHP 8.3 来了,快来看看都有哪些更新!
    介绍PHP 8.3 是 PHP 语言的主版本更新。它包含了许多新功能, 它包含了许多新功能,例如:类常量显式类型、只读属性深拷贝,以及对随机性功能的补充。一如既往,它还包括性能改进、错误修复和常规清理等。类型化类常量interface&nb...
    99+
    2023-12-11
    php8.3
  • PHP Hyperf3.0有哪些新功能
    本篇内容主要讲解“PHP Hyperf3.0有哪些新功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP Hyperf3.0有哪些新功能”吧!原生注解(Attribute)随着 PHP 8....
    99+
    2023-07-04
  • php在线更新功能/热更新,实例代码 thinkphp在线更新功能
    php在线更新功能,一个主方法,一个文件下载方法 线上项目,实测, public function update() { // 这里省略了版本判断逻辑,根据自己需要去写 // 更新包信息 ...
    99+
    2023-09-07
    php 开发语言
  • PHP 函数的最新趋势和功能
    php函数的最新趋势为:1. 箭头函数提供简洁的语法;2. 类型声明定义参数和返回值类型;3. 解构赋值轻松提取数组或对象的值;4. 可变函数参数允许接受可变数量的参数。这些趋势增强了代...
    99+
    2024-04-24
    函数 php
  • PHP 8.2 更新啦!一文速览新功能
    PHP 8.2 更新速览Created time: December 8, 2022 10:50 PMLast edited time: December 8, 2022 11:58 PM转自 PHP 8.2 Highlights: Wha...
    99+
    2023-05-14
    php
  • Angular10中的新功能有哪些
    小编给大家分享一下Angular10中的新功能有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Angular 10是对流行的Web开发框架的主要升级,通常会在...
    99+
    2023-06-14
  • PHP编译器BPC6.0的新功能有哪些
    这篇文章主要介绍“PHP编译器BPC6.0的新功能有哪些”,在日常操作中,相信很多人在PHP编译器BPC6.0的新功能有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP编译器BPC6.0的新功能有哪些...
    99+
    2023-07-04
  • PHP 7.4 中的新功能是否支持 Git 版本控制?
    在软件开发过程中,版本控制是一个非常重要的环节。Git 作为一个流行的版本控制工具,被广泛地应用于软件开发中。而 PHP 作为一种常用的编程语言,也在不断地发展和更新。那么,PHP 7.4 中的新功能是否支持 Git 版本控制呢?本文将对...
    99+
    2023-10-11
    关键字 git numpy
  • php中strlen函数的功能
    strlen 函数返回字符串的长度(字节数),具体用法如下:strlen($string):计算 $string 的长度。对于多字节字符集,一个字符可能由多个字节组成。如果 $strin...
    99+
    2024-04-29
    len函数
  • Python3.11中的最佳新功能和功能修复是什么
    这篇文章主要介绍“Python3.11中的最佳新功能和功能修复是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python3.11中的最佳新功能和功能修复是什么”文章能帮助大家解决问题。速度提升...
    99+
    2023-06-30
  • ES2020中JavaScript新功能是怎样的
    这篇文章将为大家详细讲解有关ES2020中JavaScript新功能是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 好消息 - ES202...
    99+
    2024-04-02
  • 同步打包API:Python中的新功能?
    Python是一种高级编程语言,它在数据科学、机器学习、Web开发、科学计算等领域中广泛使用。Python的生态系统非常丰富,有很多第三方库可以帮助我们完成各种任务。其中一个非常实用的库就是asyncio,它可以帮助我们编写异步代码。在P...
    99+
    2023-09-18
    同步 打包 api
  • Go中新增的功能是什么
    这篇文章主要讲解了“Go中新增的功能是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go中新增的功能是什么”吧!什么是模糊测试?模糊测试fuzz testing(fuzzing)是指向你...
    99+
    2023-06-29
  • Centos7新功能
    Centos7新功能Centos7 单用户模式 centos7里不再有0-6启动级别,而是4个target graphical.target  多人模式,支持图形和命令行两种登录,对应之前的3,5级别 ...
    99+
    2023-06-06
  • PHP中Request的功能及用途
    PHP中Request的功能及用途 在PHP中,Request是一个重要的概念,用于处理客户端发送给服务器的HTTP请求。通过Request,我们可以获取用户提交的数据、获取请求的方法...
    99+
    2024-02-27
    请求参数 接收请求 处理请求 表单提交
  • php中tcpdf的功能有哪些
    在TCPDF中,可以实现以下功能: 生成PDF文件 支持多种字体和字体格式 支持更多语言的文字内容 添加文本、图片、表格等元素到P...
    99+
    2024-03-15
    php
  • Kubernetes1.5的新功能介绍
    本篇内容介绍了“Kubernetes1.5的新功能介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!主题简介StatefulSets (原名...
    99+
    2023-06-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作