英文原版:https://blog.jetbrains.com/phpstorm/2023/12/php-annotated-nov...
翻译后地址:https://github.com/mowangjuanzi/php-annotated/blob/main/2023.11.md

欢迎来到 PHP Annotated 十一月!在这期中,我们回顾了过去一个月 PHP 社区中最有趣的发展,精选了新闻、文章、工具和视频。

亮点

  • 🎉 PHP 8.3.0 发布!
    PHP 8.3 是 PHP 语言的重大更新。包含了一些新功能,例如类型化的类常量、只读属性的深度克隆,以及 random 功能的增强。与往常一样,还包括性能提升、错误修复和常规清理工作。

    要获取 PHP 8.3 中新增内容的详细列表,请查阅发布页面迁移指南,并在 PHP 基金会的公告中了解有关该版本的更多信息。

    安装或升级到 PHP 8.3

    观看由 Freek、Brent 和 Roman 主持的庆祝 PHP 8.3 的直播节目📺。

  • ⚠️️PHP 8.0 已终止生命周期
    PHP 8.0.30 标志着这是 PHP 8.0 的最后一个版本。后续将不再接收官方安全更新。
  • PHP 8.1.26 和 PHP 8.2.13 已发布
    🐛 这些是 bug 修复版本。

    PHP 8.1 分支将再接收一个版本,PHP 8.1.27,这将是最后一个 bug 修复版本,之后只会发布安全漏洞修复。

  • 🎂PHP基金会成立两周年
    PHP基金会成立已经两年了。

    在过去的一年里,PHP 基金会支持了六位核心开发者的工作,并对 PHP 语言做出了重大贡献。

    查看 PHP 基金会 2023 年 11 月更新

    考虑通过 OpenCollectiveGitHub Sponsors支持 PHP 基金会。

PHP 核心

大部分核心新闻都在 PHP 基金会的 PHP 核心摘要系列中有详细报道,因此这里只会简要提及一些内容:

  • 📣 RFC: Resource 转换到 object
    resource 是 PHP 中过时的数据结构,早已被 object 取代。有关 resource 迁移到 object 的工作始于 2013 年,但大多数扩展直到 PHP 8.0 发布后才进行了迁移。

    Máté Kocsis 建议迁移剩余的扩展,并制定未来开发的规则。

  • 📣 RFC: 发布周期更新
    目前,PHP 版本的生命周期为 3年。许多人认为这个周期太短,而预发布阶段为期六个月则过长。

    PHP 8.3 的发布经理 Jakub Zelenka 建议将 PHP 版本的生命周期延长至 4 年(维护期2年,安全更新期2年),并对修订预发布阶段。

  • 📣 RFC: 改进 ext/dom 和 ext/xsl 中的 callback
    Niels Dossche建议允许 XSLTProcessor::registerPHPFunctions()DOMXPath::registerPhpFunctions() 方法使用 callable
  • 📣 RFC: 改变默认如何禁用JIT
    目前,JIT 以 tracing 模式运行,当 opcache.jit_buffer_size 设置为 0 时,默认禁用。RFC 建议通过设置 opcache.jit=disable 来默认禁用 JIT,并将默认的 jit_buffer_size 值增加到 64m
  • 📣 RFC: final 匿名类
    该 RFC 提出了三种选择用于改进匿名类的体验:

    1. 新增对 final 匿名类的支持(new final class {} 语法,无需进行破坏性更改)。
    2. 默认使所有匿名类为 final 类,不提供使其成为最终类的选项(破坏性更改)。
    3. 默认使所有匿名类为 final 类,并提供可选的 open 关键字来使其成为非最终类(类似于 Kotlin 中的 open class {},破坏性更改)。
  • 📣 RFC: 属性钩子
    该 RFC 中,Ilija Tovillo 和 Larry Garfield 提议使用 get/set 函数声明虚拟属性。

    其设计和语法最类似于 Kotlin,尽管也受到了 C# 和 Swift 的影响。

    class User implements Named
    {
        private bool $isModified = false;
     
        public function __construct(private string $first, private string $last) {}
     
        public string $fullName {
            get => $this->first . " " . $this->last;
     
            set($value) => [$this->first, $this->last] = explode(' ', $value);
        }
    }

    该 RFC 的一个有趣副作用是允许在接口中声明抽象属性:

    abstract class A
    {
        abstract public string $readable { get; }
        abstract protected string $writeable { set; }
        abstract protected string $both { get; set; }   
    }
     
    class C extends A
    {
        public string $readable;
        protected string $readable;
        protected string $writeable {
            set => $field = $value;
        }
        public string $both;
    }

    感谢 Sjon Hortensius,现在可以在 3v4l.org 上尝试属性钩子。

    也可以在 RFC 投票属性钩子上提供反馈意见。

工具

  • php-tui/php-tui——用于在 PHP 中创建具有伪图形用户界面的控制台应用程序的框架。
  • Crell/Serde——一个强大的适用于 PHP 8 的序列化/反序列化库。
  • pestphp/pest-plugin-stressless—— 基于 grafana/k6 构建的 Pest 压力负载测试插件。参见介绍视频📺Stressless:PHP压力测试
  • buggregator/server——轻量级的独立服务器,为 PHP 应用程序提供一系列调试功能,包括 XHprof 分析器、Symfony VarDumper 服务器、SMTP 服务器、Sentry 兼容服务器、Monolog 服务器和 HTTP 请求转储服务器。
  • NoiseByNorthwest/php-spx——一个简单且直击要点的 PHP 分析扩展,带有内置的 Web UI。
  • reliforp/reli-prof——一个 PHP 编写的采样分析器或内存分析器,从进程外部读取有关正在运行的 PHP 虚拟机的信息。可以在不更改目标脚本或加载扩展的情况下找到脚本的性能瓶颈或内存泄漏。
    附带 buggregator/trap——一个控制台迷你服务器和助手,可以更方便地进行PHP调试。
  • saloonphp/xml-wrangler——一个简单的 PHP 库,旨在使 XML 的读写变得容易。另请参阅 veewee/xml——提供了在 PHP 中操心处理 XML 所需工具的包。
  • jolicode/JoliMarkdown—— Markdown 内容的语法修正器。阅读 JoliMarkdown 介绍获取详情。
  • cerbero90/lazy-json——一个与框架无关的包,用于递归加载任意规模和任意来源的 JSON 文件到 Laravel懒惰集合中。
  • staabm/phpstan-baseline-analysis——分析 PHPStan baseline 文件并创建聚合错误趋势报告。
  • spiral/json-schema-generator——提供从数据传输对象(DTO)类生成 JSON 模式的能力。

Symfony

Laravel

其它框架

杂项

好玩

会议

查看这些即将举行的值得参加的PHP活动,并申请演讲机会:

如果想知道附近的下一场 PHP 聚会是什么时候,可以通过 Tomas Votrubafriendsofphp.org 聚会聚合网站可以找到答案。php.net网站上也有日历


以上就是今天的全部内容,感谢阅读!


魔王卷子
940 声望33 粉丝

PHP程序员,专注于后端!