PHP 8.3 重磅发布:创新与增强,开创未来

2023-12-03 09:02:35
摘要:PHP 8.3 于 2023 年 11 月 23 日发布,标志着该语言的发展又迈出了重要的一步。该版本引入了许多新功能、性能改进和弃用,旨在增强 PHP 开发体验。

PHP 8.3 于 2023 年 11 月 23 日发布,标志着该语言的发展又迈出了重要的一步。该版本引入了许多新功能、性能改进和弃用,旨在增强 PHP 开发体验。在这份综合指南中,我们将深入探讨这些更新,提供见解、技巧和创造性的代码示例,以帮助您适应并充分利用 PHP 8.3。

只读类的增强
PHP 8.3 对只读类的克隆行为进行了修改,允许在克隆期间重新初始化只读属性。这一更改解决了深度克隆中的特定边缘情况。参考以下示例:

class Article {
    public readonly DateTime $publishedOn;
    public function __construct(DateTime $publishedOn) {
        $this->publishedOn = $publishedOn;
    }
    public function __clone() {
        // PHP 8.3 允许
        $this->publishedOn = new DateTime();
    }
}
此更改允许更灵活地管理只读属性,特别是在复制具有复杂结构的对象时。

类型化类常量
PHP 8.3 允许开发人员为类常量指定类型,从而提高类型安全性并使代码更加清晰。例如:

class Config {
    const API_KEY = 'your-api-key';
}
此功能增强了类常量的稳健性,使它们成为类契约的组成部分。

#[Override] 属性
PHP 8.3 中的 #[Override]属性用于声明某个方法有意重写父方法。该属性可在重命名或删除父方法时捕获错误,从而提高代码质量。例如:
abstract class BaseClass
{
    public function defaultMethod(): int
    {
        return 1;
    }
}
final class DerivedClass extends BaseClass
{
    #[Override]
    public function defaultMethod(): int
    {
        return 2;// 故意重写
    }
}


此属性增加了额外的安全层,确保您的覆盖始终是有意且可识别的。

数组中的负索引
PHP 8.3 对数组处理负索引方式进行了改进。在以前的版本中,如果使用负索引将一个项目添加到空数组,然后添加另一个项目,则第二个项目会从 0 开始。在 PHP 8.3 中,第二个项目将放置在下一个负索引处,即 -1。例如:

$array = [];
$array[-1] = '第一个';
$array[] = '第二';
var_export($array); // ['first', 'second'] 在 PHP < 8.3 中,['first', 'second'] 在 PHP 8.3 中


这一变化使得负指数的处理更加可预测和一致。

匿名只读类
PHP 8.3 引入了对匿名类标记为只读的支持,这为动态创建不可变对象提供了更大的灵活性。例如:

$anonymousClass = new readonly class {
    public function __construct(
        public string $name = 'Anonymous',
    ) {}
};
此增强功能使只读类在各种编程场景中更加通用,扩大了其应用范围。

新函数 json_validate
PHP 8.3 新增的 json_validate() 函数提供了一种节省内存的方法来检查字符串是否为有效的 JSON。此函数特别适用于需要验证 JSON 而不对其进行解码的场景。它的工作原理如下:

$jsonString = '{"姓名": "小明", "年龄": 20}';
$isJsonValid = json_validate($jsonString);

该函数简化了 JSON 验证,使其更加高效和简单。

Randomizer 增强
PHP 8.3 对 PHP 8.2 中引入的 Randomizer 类进行了增强,新增了从字符串生成随机字节以及获取指定范围内的随机浮点数的方法。例如:

$randomizer = new Randomizer();
$randomBytes = $randomizer->getBytesFromString('abcdef', 4);
$randomFloat = $randomizer->getFloat(0.0, 1.0);


新方法扩展了 Randomizer 类的功能,使其能够生成更丰富、更灵活的随机数据。

动态类常量获取
PHP 8.3 新增了动态获取类常量的语法,使代码在使用常量时更加灵活、易读。例如:


class Setting {
  const MODE = '产生';
  public static function getCurrentMode() {
    return static::MODE;
  }
}
$currentMode = Setting::getCurrentMode();


这种语法简化了动态访问类常量的过程,增强了代码的可读性和可维护性。

更具针对性的日期/时间异常
PHP 8.3 对日期和时间函数的异常处理进行了改进,新增了针对特定错误情况的专用异常。此改进使错误报告更加描述性和准确,从而提高了调试和处理日期/时间相关问题的效率。

优化了 unserialize() 错误处理
PHP 8.3 中的 unserialize() 函数在遇到问题时始终抛出 E_WARNING 错误,从而提供更统一和可预测的错误处理。此更改简化了序列化场景中的调试和错误处理。

range() 函数的改进
PHP 8.3 对 range() 函数进行了多项改进,包括针对无效边界输入抛出 TypeError 异常,以及针对无效步长值抛出 ValueError 异常。这些改进使函数的行为更加直观和一致。

特征和静态属性
PHP 8.3 中,使用具有静态属性的特征将重新声明从父类继承的静态属性,为当前类创建单独的静态属性存储。此更改使特征中静态属性的行为与类中静态属性的行为一致。

堆栈溢出检测
PHP 8.3 添加了新的 INI 指令来检测堆栈溢出,从而防止分段错误。此功能增强了 PHP 应用程序的稳定性和可靠性,尤其是在复杂或递归场景中。

新函数 mb_str_pad
PHP 8.3 新增的 mb_str_pad() 函数填补了多字节字符串函数的空白,对于处理 UTF-8 等多字节编码至关重要。此函数可确保无论编码如何,都能正确填充字符串。

魔术方法闭包和命名参数
PHP 8.3 允许从魔术方法创建闭包并将命名参数传递给这些闭包,从而增强了魔术方法的灵活性和表现力,使其更加强大和通用。

不变的常量可见性
PHP 8.3 修复了接口实现时常量可见性检查的 bug。此更改确保了常量可见性的一致性,与 PHP 中可见性的一般原则保持一致。

弃用内容
与往常一样,PHP 8.3 包含了一些弃用内容,以逐步淘汰过时或效率较低的功能,推动语言向前发展。这些弃用包括对 mb_strimwidth() 和 ldap_connect() 等函数的更改。

PHP 8.3 的发布是 PHP 语言不断发展和改进的又一里程碑。新功能、增强功能和弃用为开发人员提供了更多工具和功能,可用于编写更高效、更健壮和更可维护的代码。在探索和采用这些更改时,请务必彻底测试您的应用程序,并随时了解 PHP 生态系统的最新发展。

你觉得这篇文章怎么样?

6

我们立足于合肥面向安徽乃至全国全球市场,我们拥有一支经验丰富、创意独到、团结协作的专业技术团队。我们立志把最好的技术通过最有效、最简单的方式提供给客户,为客户提供最佳的解决方案,我们将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,帮助客户在新经济时代下,把握商机和发展空间,并获得绝对的竞争力!我们专注于高端网站定制、系统开发、商城开发、外贸网站建设、公众号开发、小程序开发、网站优化推广、安全运维等技术领域。是高端定制网站领域著名服务商!

扫描二维码与小二CMS创始人沟通

7*24小时为您服务

小二CMS专注于高端网站定制、系统开发、商城开发、外贸网站建设、公众号开发、小程序开发、网站优化推广、安全运维等技术领域。是高端定制网站领域著名服务商!

本文标题:PHP 8.3 重磅发布:创新与增强,开创未来
免责声明:文章《PHP 8.3 重磅发布:创新与增强,开创未来》来至网络,文章表达观点不代表本站观点,文章版权属于原作者所有,若有侵权,请联系本站站长处理!
—— 小二CMS创始人微信 ——
关于我们

小二CMS专注于高端网站建设服务及定制,拥有丰富的企业网站建站经验。 近年来制作并完成了许多网站建设案例,企业品牌官网、营销型网站的建设、B2C网上商城系统开发、行业门户网站等平台开发,我们还提供了网站的策划、设计、开发、布署、安全等一站式专业的网站建设解决方案。小二CMS致力于研发国内最专业、功能最强大,扩展性能最自由灵活的高端行业通用的网站系统。我们做的不仅仅是网站系统,更多的是成就您的成功!

我们的优势

十年建站服务经验
服务1800家企业
资深行业分析策划
前沿视觉设计、研发能力
前端代码深度符合SEO优化
千家成功案例

独家源码出售
具有完备的项目管理
完善的售后服务体系
深厚的网络运营经验
时刻新技术领先研发能力
方便二次开发

我们的不同

我们是一个年轻且富有激情的团队,我们沉迷于代码并陶醉在设计之中。我们非设计,不生活;无兄弟,不编程!可年轻并不意味着没有经验。团队成员均来自各顶尖设计公司及软件公司,我们对网站设计及开发驾轻就熟,有着数百个成功案例。我们坚信用心服务,用实力说话!我们的使命:通过我们的努力,让技术改变命运!我们的宗旨:客户第一,品质至上!我们的信念:唯有客户的成功,才是我们的成功!

不忘初心,方得始终
中高端网站定制开发服务商
与我们取得联系

好作品自己会说话,

我们敬畏您给予的点滴信任 !

期待携手合作,请立即咨询我们:
QQ咨询 微信咨询
我们用心,期待您成为我们的客户

微信号:
添加微信好友, 详细咨询相关信息。

复制并跳转微信
19810950281