-
PSR-7 请求体是带游标的 StreamInterface,getContents() 读取后可能到达末尾。本文区分 getContents、__toString、rewind 和 seek(0),说明如何判断可回退能力,并在不可回退时用新流和 withBody() 让签名校验、日志与业务解析共享请求内容。
-
Composer 在生产环境通常应先用 --optimize 生成 classmap,再根据是否存在运行时生成类决定使用 authoritative classmap 或 APCu。本文围绕 dump-autoload 给出部署命令、取舍和最小检查清单。
-
PHP OptionsResolver 用 setAllowedTypes() 限制选项类型,用 setAllowedValues() 限制枚举或闭包业务规则;继承配置时用 addAllowedTypes() 和 addAllowedValues() 保留父类范围。本文给出组合写法、Symfony 7.3+ 联合类型边界和 InvalidOptionsException 排查方法。
-
Symfony Finder 可以把 files、name、path、exclude 和 notPath 组合成一组可读的筛选规则。本文用一个 PHP 示例说明文件名与目录过滤如何叠加,以及如何记录扫描范围和结果边界。
-
PHP password_hash 的 cost 不宜照抄别人的数字。本文用一个小型登录模块说明如何在接近生产的机器上选择 bcrypt cost,并把 password_verify 与 password_needs_rehash 接入渐进升级流程。