使用 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)(...
Symfony AI 组件
Symfony AI 是一套将 AI 功能集成到 PHP 应用中的组件。该包包含几个较低级别和较高级别的组件,以及它们各自的集成包。不过这些 AI 组件目前仍为实验性的,但你可以开始深入了解示例和演示:平台:OpenAI、Anthropic、Azure、Google 等各 AI 平台的统一接口。Agent:用于构建可以与用户交互并执行任务的 AI 代理的框架...
探索 PHP 中的协程:生成器和纤程
在讨论异步或非阻塞代码时,“协程”这个词经常出现,但它究竟是什么意思呢?在本文中,我们将探讨协程的概念,并了解 PHP 如何通过生成器和纤程来支持它们。无论是构建管道、CLI 工具,还是准备深入研究并发,理解协程都是至关重要的第一步。什么是协程?协程是一个函数。然而,普通函数会从上到下持续运行直至完成,而协程可以自行暂停/挂起并恢复。它每次挂起时都可以返回一...
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 ...
ReactPHP:基于事件驱动的非阻塞 I/O 框架
ReactPHP 是 PHP 中用于事件驱动编程的底层库。其核心是事件循环,在其之上提供底层实用程序,例如:流抽象、异步 DNS 解析、web 客户端/服务端、HTTP 客户端/服务器以及与进程的交互。第三方库可以使用这些组件创建异步网络客户端/服务器等...