PHPUnit 项目为PHP 8.4版本更新做准备:处理隐式可空参数类型问题
随着PHP 8.4版本的即将发布,PHPUnit项目团队正在积极准备应对一项重要的语言变更——隐式可空参数类型的弃用。这项变更将影响PHPUnit及其依赖库的代码兼容性,需要开发者提前做好准备。
在PHP 8.4中,语言规范决定弃用隐式可空参数类型。这意味着在函数或方法参数中,如果类型声明后面没有显式加上问号(?)来表示可空性,但实际上参数允许传入null值的情况,将会触发弃用警告。这项变更是为了提升代码的明确性和一致性。
PHPUnit项目负责人Sebastian Bergmann已经完成了PHPUnit自身代码的更新工作,覆盖了8.5、9.6、10.5、11.0和main等多个分支版本。更新内容包括将所有隐式可空的参数类型改为显式声明,即在类型前加上问号(?)标记。
对于PHPUnit的依赖库,团队也进行了全面检查。其中phar-io/manifest和theseer/tokenizer两个库已经由原作者完成了相应更新并发布了新版本。这些更新确保了在PHP 8.4环境下运行时不会触发弃用警告。
特别值得一提的是PHP-Parser库的处理。由于PHP-Parser 4.x系列最初支持PHP 7.0版本,而PHP 7.0并不支持可空类型语法,这给更新带来了挑战。经过与PHP-Parser维护者Nikita Popov的讨论,决定将PHP-Parser 4.x的最低PHP版本要求提升到7.1,以便能够使用可空类型语法。虽然这会影响到极少数仍在使用PHP 7.0的用户,但考虑到PHP 7.0的使用率已降至0.2%,这个决定是合理的。
对于PHP开发者来说,这项变更意味着需要检查自己的代码库,确保所有可空参数都使用了显式语法声明。这不仅有助于避免未来的兼容性问题,也能使代码意图更加清晰。PHPUnit项目的这一系列准备工作为社区树立了良好的榜样,展示了如何前瞻性地应对语言特性的变更。
随着PHP 8.4的临近,建议所有PHP项目都开始检查自己的代码库,特别是那些有长期维护计划的项目。通过提前处理这类兼容性问题,可以确保在PHP 8.4发布时能够无缝过渡,避免因弃用警告而影响开发体验。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0191
cann-learning-hubCANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。Jupyter Notebook0117
Step-3.7-FlashStep-3.7-Flash是一个拥有 1980 亿参数的稀疏混合专家(MoE)视觉语言模型,由 1960 亿参数的语言主干网络和 18 亿参数的视觉编码器组合而成,具备原生图像理解能力。Python00
JoyAI-EchoJoyAI-Echo,这是一个独立的、仅用于推理的版本,旨在实现分钟级多镜头音视频生成。它采用了经过蒸馏的DMD生成器、配对的跨模态记忆以及故事级别的一致性。其性能的核心在于,一个跨模态视听记忆库能够在长达五分钟的视频中保持角色外观和语音音色的一致性。同时,一个训练后处理流程将基于记忆的强化学习与分布匹配蒸馏相结合,实现了7.5倍的速度提升,显著增强了视觉质量和对齐效果。00
omega-aiOmega-AI:基于java打造的深度学习框架,帮助你快速搭建神经网络,实现模型推理与训练,引擎支持自动求导,多线程与GPU运算,GPU支持CUDA,CUDNN。Java04
llm-universe本项目是一个面向小白开发者的大模型应用开发教程,在线阅读地址:https://datawhalechina.github.io/llm-universe/Jupyter Notebook08