在 Laravel 中使用 Http::fake 模拟测试的最佳实践

Laravel 的 `Http::fake()` 不只是“把外部请求挡下来”这么简单,它还关系到测试速度、稳定性以及请求断言是否可信。本文从常见测试痛点出发,梳理 `Http::fake()` 的几种实用写法、适用场景,以及如何避免漏拦截请求。

在 Laravel 中使用 Http::fake 模拟测试的最佳实践

LNMP 中如何优化 PHP-FPM 配置

PHP-FPM 是 LNMP 架构里最值得优先调的环节之一。本文从进程模型、超时、慢日志、内存限制、OPcache、连接方式和监控几个方面,整理出一套可直接落地的优化思路,并给出示例配置与调参判断方法。

LNMP 中如何优化 PHP-FPM 配置

如何从树形结构中准确提取所有叶子节点和父节点 ID

构建多层树结构时,很多代码能生成 `tree`,却遗漏了子树递归返回的 `leaf_ids` 和 `parent_ids`,结果就是叶子节点为空、父节点收集不完整。本文用一段 PHP 示例说明问题根源、修复方式、验证结果,以及在真实业务里需要注意的 ID 唯一性、根节点映射与性能边界。

如何从树形结构中准确提取所有叶子节点和父节点 ID

PHP-Casbin:把权限控制从硬编码判断改造成可维护的策略系统

PHP 项目里的权限控制,最怕的是把判断逻辑写死在业务代码里:角色一变、需求一加,权限代码就会在多个模块里反复修改。PHP-Casbin 的价值,在于把模型和策略拆开,用统一方式覆盖 RBAC、ACL、ABAC、多租户和 API 权限,让权限系统从“到处补判断”变成“集中配规则”。

PHP-Casbin:把权限控制从硬编码判断改造成可维护的策略系统

PHP 8.6 如何设置 PHP-FPM 状态页访问

在 PHP 8.6 中启用 PHP-FPM 状态页,本质上还是配置 `pm.status_path`,再让 Nginx 以受控方式把请求转发给 FPM。本文按“进程池设置、服务重载、Nginx 路由、安全验证”四步整理,并补出容易踩到的访问限制与排错要点。 PHP 8.6 中开启 PHP-FPM 状态页并不难,真正容易出错的是请求怎么转发、哪些来源能访问,以及改完配置后为什么仍然没有响应。

PHP 8.6 如何设置 PHP-FPM 状态页访问

一套面向 PHP 开发的 Sublime Text 配置整理

这篇文章整理了一套偏 PHP 开发场景的 Sublime Text 配置,包括编辑器外观、代码检查、格式化和常用插件组合。你可以直接看清每项配置解决什么问题、哪些插件值得保留,以及现有命令路径和参数该放在什么位置。

一套面向 PHP 开发的 Sublime Text 配置整理

PHP 相对时间显示怎么写:今天、昨天、前天与几天前的正确计算

文章围绕 PHP 中“刚刚、几分钟前、昨天、前天、几天前”这类相对时间显示展开,重点解释为什么直接用时间戳差值除以 86400 容易算错“天数”,并给出一段可直接使用的函数。读者可以据此判断相对时间文案该按“经过了多少秒”还是“跨了多少自然日”来计算。

PHP 相对时间显示怎么写:今天、昨天、前天与几天前的正确计算