php教程技术文章
-
PHP OptionsResolver 用 setAllowedTypes() 限制选项类型,用 setAllowedValues() 限制枚举或闭包业务规则;继承配置时用 addAllowedTypes() 和 addAllowedValues() 保留父类范围。本文给出组合写法、Symfony 7.3+ 联合类型边界和 InvalidOptionsException 排查方法。114 收藏 -
PHP match 表达式没有匹配到任何分支时会抛出 UnhandledMatchError,而不是像 switch 一样自然落空。本文对比 default、显式捕获和输入校验三种处理方式,并说明严格比较与范围判断的兼容边界。113 收藏 -
PHP PDO 的模拟预处理与原生预处理,关键差异在参数模板由谁解析以及 prepare() 是否与数据库协商。本文说明 ATTR_EMULATE_PREPARES 的配置方式、唯一占位符写法、驱动兼容边界和排查清单。112 收藏 -
讲清 PHP hash_equals 的参数顺序、长度边界与 hash_hmac 输出格式,给出回调签名校验的原创示例。112 收藏 -
说明 PHP 从 JPEG 的 APP13 数据读取 IPTC 标签的方法,保留标签多值数组,并区分文件读取失败、缺少APP13和解析未取得数据等状态。112 收藏 -
PHP 8.4 新增 mb_ucfirst(),可以按多字节字符安全处理标题首字母。本文从 UTF-8 标题清洗场景出发,核对编码、空字符串、null 参数和 PHP 8.3 兼容写法,给出可回归的最小实现。111 收藏 -
preg_match 配合 PREG_OFFSET_CAPTURE 返回的是匹配文本和字节偏移,不是中文字符下标。本文用 UTF-8 文本拆解偏移量、mb_substr 截取和 offset 参数的校验边界。111 收藏 -
PHP 导出 CSV 时不要用 implode 直接拼接字段。使用 fputcsv 让包含逗号、双引号和换行的字段自动加包围符,并显式把 escape 设为空字符串,避免 PHP 专有转义机制影响标准 CSV 兼容性。111 收藏 -
用 PHP 自定义 session handler 把序列化会话写入 Redis,并通过 SET NX EX、随机 token 和 TTL 处理并发写入与过期回收。110 收藏 -
PHP 8.4 的 array_find 只返回命中的值,想同时取得键和值时,应先用 array_find_key 得到键,再回查原数组;这种写法还能区分未命中与命中 null。110 收藏 -
PHP PDO::ATTR_ORACLE_NULLS 控制取数阶段如何处理空字符串、NULL 与普通文本。本文比较三种模式,给出设置、读取和排查方法。109 收藏 -
PHP DatePeriod 配合 P1M 从 29、30 或 31 号开始时,后续月份可能出现日期漂移。本文解释原因,并给出固定到每月 1 号、需要月末时再显式计算最后一天的写法。109 收藏 -
PHP 8.4 与 8.5 的 #[\Deprecated] 支持范围不同。本文从旧 API 迁移现场出发,用函数、trait、类常量和全局常量示例,验证弃用信号、Reflection 与版本兼容边界。107 收藏 -
PHP match 没有命中任何分支时会抛出 UnhandledMatchError。本文用状态映射示例说明何时保留异常、何时增加 default,并给出输入校验与测试边界。107 收藏 -
PHP DateTime 时区转换后日期跨天,通常是同一时间点在目标时区的本地日期不同。本文区分 setTimezone、setTime 和字符串解析,说明如何保留原始时间并按业务时区计算日期。107 收藏