7 个使用 PHP 8.5 的管道操作符的真实情景
PHP 8.5 的管道符 (|>) 是一项功能强大的新增特性,它通过清晰简洁的方式实现操作链式调用,支持更具函数式编程风格的代码编写。它取左侧表达式的结果,并将其作为第一个参数传递给右侧的函数或方法。$value = "hello world"; $result = $value |> function3(...) |> ...
PHP 8.5:在闭包中获取当前闭包
PHP 8.5 将支持闭包中的递归,方法是获取当前正在执行的闭包(感谢 Alexandre Daubois 的贡献)。正如 rfc:closure_self_reference RFC 中指出的,目前的变通方法是将变量引用绑定到闭包中。PHP 8.5 提供了静态方法 Closure::getCurrent() 来获取当前正在运行的闭包:$fibonacci ...
PHP 8.5: clone() 函数改进
作为值对象的粉丝,我非常乐意尽可能将我的类和属性标记为只读,这样可以减少错误。难点在于,如果你只想更改对象的一个属性,你需要确保复制所有属性,就像下面的 setFirst() 函数一样。readonly class FullName { public function __construct(public string $first, pub...
使用 PHP 通过 IP 地址获取地理位置
在 Web 应用中,你是否要求访问者选择国家/地区名称、城市名称或其他与位置相关的信息?如果是,你可以使用地理位置 API 来实现同样的功能。地理位置 API 提供访问者的地理位置详细信息。此 API 使用 IP 地址获取访问者的地理位置详细信息。因此,为了追踪所有详细信息,我们需要访问者的 IP 地址。使用 IP 地址,我们可以轻松获取所有地理位置详细信息...
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 系统能够连接外部工具和数据源。可...