-
PHP OptionsResolver 用 setAllowedTypes() 限制选项类型,用 setAllowedValues() 限制枚举或闭包业务规则;继承配置时用 addAllowedTypes() 和 addAllowedValues() 保留父类范围。本文给出组合写法、Symfony 7.3+ 联合类型边界和 InvalidOptionsException 排查方法。
-
PHP PDO 的模拟预处理与原生预处理,关键差异在参数模板由谁解析以及 prepare() 是否与数据库协商。本文说明 ATTR_EMULATE_PREPARES 的配置方式、唯一占位符写法、驱动兼容边界和排查清单。
-
PHP 8.4 的 array_find 只返回命中的值,想同时取得键和值时,应先用 array_find_key 得到键,再回查原数组;这种写法还能区分未命中与命中 null。
-
对比 PHP json_validate 与 json_decode 的语法校验、值构建、depth、flags 和错误处理边界,说明什么时候只校验、什么时候直接解码,以及 PHP 8.2 的兼容写法。
-
PHP 7.3+ 可在 session_set_cookie_params 的 options 数组中设置 samesite。多数站点从 Lax 起步;Strict 更严格;确需跨站会话时才用 None,并同时启用 Secure。本文给出完整代码、响应头验证、故障处理和回滚清单。
-
PHP OPcache preload 在服务器进程启动时把类与函数载入持久内存,预加载实体不会像普通脚本那样随时间戳检查刷新。本文说明为什么改代码后必须重建 PHP-FPM 进程,以及如何做可观测、可回退的发布。
-
Symfony Finder 可以把 files、name、path、exclude 和 notPath 组合成一组可读的筛选规则。本文用一个 PHP 示例说明文件名与目录过滤如何叠加,以及如何记录扫描范围和结果边界。
-
PHP password_hash 的 cost 不宜照抄别人的数字。本文用一个小型登录模块说明如何在接近生产的机器上选择 bcrypt cost,并把 password_verify 与 password_needs_rehash 接入渐进升级流程。