使用 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 仍然存在某些不可恢复的错误情况,这些情况只是显示错误消息并立即退出(如...
PHP 8.5: 弃用非规范标量类型的强制转换(boolean|double|integer|binary)
PHP 的标量类型强制转换允许标量类型的一些变体。例如,集可以使用 (integer),也可用 (int) 将变量强制转换为整数:$value = '42'; (integer) $value; // int(42) (int) $value; // int(42)PHP 标量类型有如下这些可替代的变体:类型规范类型名备选类型名称Integer(int)(...
PHP 8.5: CLI: php --ini=diff 输出非默认 INI 指令
PHP8.5 中的 PHP CLI 可执行文件支持一个新的 php -ini=diff 命令行标志,该标志列出了与内置默认值不同的 ini 指令。这提供了一种快速识别更改的 INI 值的方法,在应包含可能导致问题的潜在 INI 设置的错误报告中特别有用。PHP 继续支持 php --ini CLI 选项,该选项列出了有关加载的 ini 文件的信息。调用 ph...
PHP 8.5: 管道操作符 (|>)
PHP 8.5 添加了一个新的操作符:管道操作符(|>),用以从左到右链式调用多个 callable,并将左边 callable 返回的值传入到右边。管道操作符并不会为语言添加新的能力。它以更直观的方式“链式调用”多个 callable,而不必像以前那样嵌套调用多个callable 或者使用变量获取返回值再传入下一个 callable。$result ...
PHP 8.5.0 Alpha 1 可用于测试
PHP 团队发布 PHP 8.5.0 Alpha 1 的第一个测试版本。这开始了 PHP 8.5 的发布周期,其大致轮廓在 PHP Wiki 中指定。下载 PHP 8.5.0 Alpha 1 请访问下载页面。请仔细测试该版本,并将发现的问题报告到 Github。不要再生产环境中使用该版本,它是早期测试版本。有关新功能和其他更改的更多信息,你可以阅读 NEWS...
PHP 8.5:新增 array_first 和 array_last 函数
PHP 8.5 添加了两个新函数,用于检索数组的第一个和最后一个值。这些函数补充了 PHP 7.3 中添加的 array_key_first 和 array_key_last 函数。array_first:从给定数组中检索第一个值;如果数组为空,则为 null。array_last:从给...
PHP 8.5: 新增 locale_is_right_to_left function 以及 Locale::isRightToLeft 方法
PHP 8.5 中的 Intl 扩展添加了新功能,以确定给定的区域设置是否使用 RTL(从右向左)脚本。阿拉伯语、希伯来语、乌尔都语和其他一些语言文字是从右向左书写的。虽然 RTL 脚本列表相对较小,而且很少添加新脚本,但新功能利用了 ICU 数据,这些数据在依赖 ICU 数据的其他软件中会持续更新。新增加的函数 locale_is_right_to_lef...