PHP 8.3版本来袭,这些新特性你绝对不能错过!crmeb开发
2023年11月23日,PHP8.3正式发布。它包含了许多新功能,它包含了许多新功能,例如:类常量显式类型、只读属性深拷贝,以及对随机性功能的补充。一如既往,它还包括性能改进、错误修复和常规清理等。(转自crmeb官网)
类型化类常量
PHP < 8.3
PHP 8.3
动态获取类常量
PHP < 8.3
PHP 8.3
新增 #[\Override] 属性
PHP < 8.3
PHP 8.3
通过给方法添加 #[\Override] 属性,PHP 将确保在父类或实现的接口中存在同名的方法。添加该属性表示明确说明覆盖父方法是有意为之,并且简化了重构过程,因为删除被覆盖的父方法将被检测出来。
只读属性深拷贝
PHP < 8.3
PHP 8.3
readonly 属性现在可以在魔术方法 __clone 中被修改一次,以此实现只读属性的深拷贝
新增 json_validate() 函数
PHP < 8.3
PHP 8.3
json_validate() 可以检查一个字符串是否为语法正确的 JSON,比 json_decode() 更有效。
新增Randomizer::getBytesFromString()方法
PHP < 8.3
PHP 8.3
在 PHP 8.2 中新增的 Random 扩展 通过一个新方法生成由特定字节组成的随机字符串。这种方法可以使开发者更轻松的生成随机的标识符(如域名),以及任意长度的数字字符串。
新增Randomizer::getFloat()和Randomizer::nextFloat()方法
PHP < 8.3
PHP 8.3
由于浮点数的精度和隐式四舍五入的限制,在特定区间内生成无偏差的浮点数并非易事,常建的用户解决方案可能会生成有偏差的结果或超出要求范围的数字。
Randomizer 扩展了两种方法,用于随机生成无偏差的浮点数。Randomizer::getFloat() 方法使用的是 γ-section 算法,该算法发表于 Drawing Random Floating-Point Numbers from an Interval. Frédéric Goualard, ACM Trans. Model. Comput. Simul., 32:3, 2022.
新的类、接口和函数
弃用和向后不兼容