PSR-20 Clocks: PHP 中的可测试时间
想象一下。你推送了一些代码,然后砰的一声,一个不相关的单元测试在 CI 中失败了:差了一秒。你重新运行测试:砰,又失败了。再一次重新运行:终于,测试通过了。你目测了一下逻辑,发现它完全没问题,那么到底是怎么回事呢?最有可能的答案是:时间。设置 Fixture、触发模拟(不要这么做)以及运行几个断言所花费的时间,很容易将“现在 + 30 秒”的检查变成“现在 ...
Laravel 12.34 中的 Failover 队列驱动
Failover 队列驱动Laravel 12.34 引入了新的故障转移(failover)队列驱动,以提高处理作业的可靠性。它允许你按优先级定义多个队列连接。如果第一个连接失败,Laravel 会自动尝试将作业推送到下一个可用的连接。此功能在正常运行时间和作业交付至关重要的生产环境中尤为有用。Failover 队列驱动的工作原来故障转移(failover)...
PHP 8.5: Intl: 新增 IntlListFormatter 类
PHP 8.5 中的 Intl 扩展添加了一个名为 IntlListFormatter 的新类。它为列表提供了区域(locale)感知的格式化,使其成为人类可读的“和”列表、“或”列表或单位列表。新的 IntlListFormatter 类遵循与 Intl 扩展中的其他类相同的模式;它使用有效的 locale 字符串进行实例化,并使用 ICU 数据进行实际格...
PrettyPHP - PHP 代码格式化
PrettyPHP 是一个代码格式化器,是一个用 PHP 编写的快速、确定的 PHP 代码p格式化器。它有合理的默认值,无需配置即可运行。$ pretty-php app
PHP 的 XML 转换器软件包
Novak Urošević 发布的 XML 转换包提供了将 XML 数据转换成 JSON 及 PHP 数组的简单助手函数。你可以使用 xmlToJson() 和 xmlToArray() 方法将给定的 XML 字符串转换成需要的格式:...
MCP 官方 PHP SDK
PHP 基金会与 Anthropic 的MCP 团队和 Symfony 团队宣布发布官方 MCP PHP SDK。其目标是 PHP 生态可依赖的、与框架无关的、可用于生产的参考实现。MCP 是什么?Model Context Protocol(模型上下文协议)是 Anthropic 的 MCP 团队引入的开放标准,使得 AI 系统能够连接外部工具和数据源。可...
使用 PHP 8.5 的 `#[\NoDiscard]` 注解不再忽视重要的返回
在 PHP 中编写函数或方法时,我们经常返回对调用者处理至关重要的值。通常,这些返回值需要被消耗。请查看以下示例。
PHP 8.5:弃用在用户输出 handler 中返回非字符串值
PHP 提供了一系列 ob_* 函数,允许运行嵌套输出缓冲区、显式刷新缓冲区和设置自定义输出缓冲区处理器(handler)。当设置自定义输出缓冲区处理程序时,该函数将被调用。你可以进一步处理缓冲区内容,或将缓冲区内容传递到其他地方。例如,自定义输出缓冲区处理程序可以重写打印调用写入的内容,压缩它们,将它们写入文件等。输出缓冲是 PHP 中长期存在的一项功能,...
PHP 8.5:弃用从自定义输出缓冲区处理程序发布输出
PHP 函数 ob_start 提供了一种方法来启动用户提供的输出缓冲区处理函数,并返回该函数处理过的缓冲区的内容。缓冲区处理函数不应自行发出任何输出,也不允许从处理函数中启动缓冲区。如果用户提供的输出缓冲区处理程序发布自己的输出,则在 PHP 8.5 之前的 PHP 版本中,该输出将被静默忽略。自 PHP 8.5 开始,用户提供的输出缓冲区处理...
PHP 8.5: PHP 致命错误的堆栈跟踪支持
PHP 7.0 中最具影响力的变化之一是,它将几个 PHP 错误条件移动到抛出 Error 异常,而不是触发致命错误。类型错误、语法错误和其他几种类型的错误是现代 PHP 版本中的异常。PHP 还支持设置自定义错误处理程序,因此也可以记录某些错误,如弃用通知、警告和其他通知。然而,PHP 仍然存在某些不可恢复的错误情况,这些情况只是显示错误消息并立即退出(如...