-
PHP 8.4 readonly 属性默认隐含 protected(set),子类可参与初始化,但普通初始化后仍不能修改。本文用版本矩阵和父子类代码解释写入作用域、重复赋值与旧版本兼容。
-
解释 PHP Symfony DomCrawler 中筛选节点与遍历节点的区别,用同一份 HTML 对比 filter、children、siblings、ancestors 和 closest 的查询范围,并总结空集合与嵌套 XPath 的处理边界。
-
PHP 8.5 新增 array_first(),可以按数组当前顺序读取首个值;空数组返回 null。本文用非连续键、空数组和首值为 null 的场景,说明如何选择 array_first、array_key_first 与兼容写法。
-
PHP 8.4 新增的 array_all 可以判断数组元素是否全部满足回调条件。本文用订单状态示例说明 value 和 key 参数、空数组返回 true、遇到 false 短路,以及旧版本兼容边界。
-
PHP password_get_info 用来读取已有密码哈希的 algo、algoName 和 options。本文说明怎样安全读取 cost 等算法参数,并区分元数据查看、密码验证与 password_needs_rehash 的升级判断。
-
PHP DOMDocument 解析中文 HTML 时,应先确认输入字符串是 UTF-8,再给 HTML 明确编码提示,并让 saveHTML 输出与响应声明保持一致。本文还说明构造参数不负责自动转码,以及 PHP 8.4 Dom\HTMLDocument 的 HTML5 解析边界。
-
PHP WeakMap 能以对象为键保存临时附加元数据,而且键不会增加对象引用计数。本文通过一个 MetadataRegistry 小项目演示写入、读取、自动移除与验收,并说明它和 SplObjectStorage 的选择边界。
-
PHP PDO 分页查询中,LIMIT 和 OFFSET 属于整数边界,直接用 execute 数组传参时默认按字符串处理,可能触发 SQL 语法错误。本文说明占位符的边界、参数类型差异和完整分页写法,并给出 bindValue 与 bindParam 的选择建议。
-
PHP 读取自有 INI 配置时,可以使用 process_sections=true 保留节层级,并用 INI_SCANNER_TYPED 尽可能保留 true、false、null 和整数类型。本文说明三种扫描模式、严格失败判断、常量替换和不可信配置的回退策略。
-
PHP DateTime 计算跨时区日期差时,要先区分日历间隔和真实经过时长。本文用 DateTimeImmutable、IANA 时区、diff、UTC 和时间戳说明普通日期与夏令时边界。
-
PHP 8.5 URI 扩展用 Uri\Rfc3986\Uri 对 URL 做标准解析、组件读取、相对引用合并与不可变修改,本文给出 parse、构造器和 with 方法的选择边界。
-
PHP 8.2 引入 readonly class 后,子类并不能像普通类一样随意继承。本文用最小示例说明只读继承、属性类型、静态属性与动态属性的限制,并给出迁移和验证清单。
-
PHP Generator 可以用 yield 把大文件读取拆成惰性批次:每次只保留当前数据,消费端提前停止时释放最后一个生成器引用,并在 finally 中关闭文件句柄。本文给出 CSV 批量读取、尾批次、异常和资源清理的完整写法。
-
array_column 使用 index_key 重建数组时,重复键不会自动合并记录,后来的值会覆盖前面的值。本文说明覆盖原因,并给出保留全部记录、保留最后一条和主动拒绝重复键的写法。
-
PHP mb_detect_encoding 只能在限定候选中做启发式判断。本文用导入链路说明候选集合、strict 参数、歧义输入与转换分流,帮助你避免把近似结果直接写回系统。