php教程技术文章
-
以最小 composer.json 和部署命令说明 config.platform.php 的模拟作用,区分依赖解析与真实 PHP、扩展检查,提前阻断环境漂移并保留可复现部署记录。331 收藏 -
PSR-7 请求体由共享 Stream 承载,前一个中间件读取后游标会改变,后续读取为空通常是位置问题。本文按可回绕与不可回绕两类流给出处理方式,并用分块读取降低批处理中的额外字符串分配。384 收藏 -
解释 PSR-7 请求体 Stream 的游标语义,给出可 seek 流的恢复方式与不可 seek 流的替换方式,帮助中间件避免第二次读取为空。399 收藏 -
PSR-7 中间件先读取请求体后,下游拿到空内容,通常不是请求丢失,而是共享 Stream 游标已经到达末尾。本文用可复用的 PHP 示例说明 seekable 流的 rewind 写法,以及不可 seek 流应如何通过 request attribute 传递解析结果。378 收藏 -
解释 PHP Pure Enum 与 Backed Enum 在 JSON 序列化中的差异,并用统一映射边界减少批处理响应的额外分配。219 收藏 -
通过纯枚举与字符串、整数支撑枚举的对照,解释 PHP JSON 输出类型不同和空响应的原因,并给出显式接口映射、自定义序列化与迁移兼容的取舍。204 收藏 -
PHP 纯枚举与 Backed Enum 的 JSON 行为并不相同:前者直接序列化会报错,后者默认输出标量值。本文用可复用的 JsonSerializable 示例统一输出枚举名称和值,并说明接口兼容边界。447 收藏 -
PHP Fibers 可以暂停整个调用栈并在稍后恢复,适合把批处理任务改造成可交回调度器的协程。本文用一个轻量调度结构说明 suspend、resume、异常传递和状态复用的边界,也解释为什么 Fiber 本身不会把同步阻塞 I/O 自动变成并发。140 收藏 -
用无外部 I/O 的最小 PHP Fiber 实验,区分挂起消息、恢复输入和最终返回值,解释 resume 返回 null 的原因,以及阻塞函数不会自动变成异步调用的边界。109 收藏 -
用 PHP Fibers 封装一个可暂停、可恢复的任务,说明 start、suspend、resume 的值传递、异常边界,以及 Fiber 与事件循环的区别。231 收藏 -
PHP 8.5.12 是 PHP 8.5 分支的安全修订版。本文从官方发布页、ChangeLog、下载页和本机版本信息入手,区分源码修订、Windows 8.5.12-1 构建与 PHP 8.5 大版本变化,并整理升级前后的检查清单。394 收藏 -
PHP Composer 的 config.platform.php 可以让依赖解析按生产 PHP 版本进行。本文说明如何配置 platform.php、如何区分模拟平台与真实运行环境,以及 composer check-platform-reqs、扩展约束和 platform_check.php 的使用边界。477 收藏 -
PHP 8.4 迁移到 8.5 应固定环境与依赖基线,区分不兼容变化和弃用项,核对 CLI、FPM 与队列入口,并准备受限日志、灰度观察和业务数据兼容的回退安排。385 收藏 -
PHP 8.5 的 #[\NoDiscard] 用来提醒调用方不要静默丢弃重要返回值。本文说明函数和方法的标记方式、void 显式忽略、接口与继承边界,以及兼容 PHP 8.4 及更早版本时的迁移检查。130 收藏 -
PHP 的 24 小时并不总是同一种语义:createFromDateString('24 hours') 会按时间组件推进,而 PT24H 表示固定时长。本文用时区切换场景说明差异,并给出业务选择和检查清单。467 收藏