当前位置: 首页 > news >正文

PHP 8.4 重磅发布了

文章精选推荐

1 JetBrains Ai assistant 编程工具让你的工作效率翻倍
2 Extra Icons:JetBrains IDE的图标增强神器
3 IDEA插件推荐-SequenceDiagram,自动生成时序图
4 BashSupport Pro 这个ides插件主要是用来干嘛的 ?
5 IDEA必装的插件:Spring Boot Helper的使用与功能特点
6 Ai assistant ,又是一个写代码神器

文章正文

PHP 8.4 提前发布!原计划于2024年11月21日发布的PHP 8.4.0,惊喜地提前至11月19日正式上线,紧随其后的是11月20日发布的PHP 8.4.1。如此高效的发布节奏令人瞩目。

本文将深入探讨PHP 8.4的新特性,以及它为何值得全球开发者关注和兴奋。

最新动态及其重要性

1、Property Hooks:你最喜欢的新功能
PHP 8.4 的一大亮点是属性钩子 (Property Hooks)。它提供了一种更优雅的方式来实现 gettersetter 方法,让您无需编写冗余代码即可自定义类属性的访问和修改行为。

例子:

class MagicClass {private array $data = [];public function __get($key) {return $this->data[$key] ?? null;}public function __set($key, $value) {$this->data[$key] = $value;}
}$obj = new MagicClass();
$obj->name = "PHP";
echo $obj->name; // 输出: PHP

2、不对称可见性
PHP 8.4 的非对称可见性特性允许为 gettersetter 方法设置不同的访问权限。例如,您可以将属性的读取权限设置为 public,同时保持写入权限为 private

例子:

class ReadOnlyProperty {public string $data get;private string $data set;
}

3、不使用括号的方法链
告别方法链中多余的括号!PHP 8.4 允许您在直接调用新实例化对象的方法时省略括号,从而简化方法链的书写。

例子:

$result = new MyClass()->firstMethod()->secondMethod();

无需多余的 (new MyClass()),代码更简洁、易读,也更省事。

4、新的数组函数
PHP 8.4 新增了备受期待的数组函数,例如 array_find()array_find_key(),显著简化了常见的数组操作。
例子:

$numbers = [1, 2, 3, 4];
$found = array_find($numbers, fn($n) => $n > 2);echo $found; // 输出: 3

这些函数使数组更加易于使用,使您免于复杂循环的困扰。

PHP 8.4 包含多项底层改进:

  • 增强的 HTML5 支持: 新的 \Dom\HTMLDocument 类可准确解析 HTML5,更好地适应现代 Web 开发需求。
  • 改进的多字节字符串函数: 新增的 mb_ucfirst() 函数简化了非拉丁脚本的使用。
  • 更清晰的空值处理: 弃用隐式可空参数,强制使用更清晰、明确的函数签名。

为什么 PHP 8.4 值得大力宣传

PHP 8.4 不仅仅是新功能的集合,更代表着 PHP 向更现代化、高效和开发者友好的方向迈进的一大步。无论您是使用 Laravel、WordPress,还是其他框架或 API,PHP 8.4 都能为您带来诸多提升。

为何提前发布?

提前发布的原因不得而知,或许是 PHP 团队迫不及待地想与我们分享这份喜悦,也或许是为了让我们在周末前有时间体验新特性。无论如何,PHP 8.4 已正式发布,并且非常值得期待。

http://www.lryc.cn/news/490349.html

相关文章:

  • LVM缩容
  • Next.js 独立开发教程(三):CSS 样式的完整指南
  • React (三)
  • Python数据结构之链表
  • “LLM是否是泡沫”
  • 基于机器学习的人脸识别算法matlab仿真,对比GRNN,PNN,DNN以及BP四种网络
  • 算法(Algorithm)
  • C语言中const char *字符进行切割实现
  • 【UE5】在材质中计算模型在屏幕上的比例
  • 前端速通(HTML)
  • 订单日记为“惠采科技”提供全方位的进销存管理支持
  • Linux:文件管理(一)
  • 鸿蒙多线程开发——线程间数据通信对象03(sendable)
  • linux从0到1——shell编程7
  • 自主研发,基于PHP+ vue2+element+ laravel8+ mysql5.7+ vscode开发的不良事件管理系统源码,不良事件管理系统源码
  • 【海思Hi3519DV500】双目网络相机套板硬件规划方案
  • 【电源专题】BUCK电源SW电压的平均值为什么等于输出电压?
  • SpringCloud Gateway转发请求到同一个服务的不同端口
  • 【模块一】kubernetes容器编排进阶实战之pod的调度流程,pause容器及init容器
  • PySpark3:pyspark.sql.functions常见的60个函数
  • Python操作neo4j库py2neo使用之创建和查询(二)
  • 力扣11.23
  • golang实现TCP服务器与客户端的断线自动重连功能
  • 数据结构 (6)栈的应用举例
  • 谁的年龄最小(结构体专题)
  • 【论文笔记】LLaVA-KD: A Framework of Distilling Multimodal Large Language Models
  • M|大脑越狱
  • 数据库编程(sqlite3)
  • 【C语言】关键字详解
  • 什么是计算机网络