php教程技术文章
-
PHP DateTime 计算跨时区日期差时,要先区分日历间隔和真实经过时长。本文用 DateTimeImmutable、IANA 时区、diff、UTC 和时间戳说明普通日期与夏令时边界。226 收藏 -
array_column 使用 index_key 重建数组时,重复键不会自动合并记录,后来的值会覆盖前面的值。本文说明覆盖原因,并给出保留全部记录、保留最后一条和主动拒绝重复键的写法。221 收藏 -
PHP 反射读取方法可见性时,可以用 ReflectionMethod 的 isPublic、isProtected、isPrivate 判断 public、protected、private,再用 getModifiers 和官方常量读取 static、abstract、final 等组合属性。本文同时说明反射元数据与实际调用权限的边界。216 收藏 -
Composer 的 why/depends 用来追溯某个包由哪些依赖引入,--tree 可以展开递归关系;如果问题是目标版本为什么不能安装,则应改用 why-not/prohibits。本文用一组可复查的命令区分两类排查。213 收藏 -
用 DateTimeImmutable 和 DateTimeZone 创建时区明确的不可变时间,覆盖构造器、格式解析、默认字段与时区转换边界。209 收藏 -
DOMDocument::loadHTML 使用 HTML4 解析规则,遇到 HTML5 标签时不要把结果当成浏览器 DOM。本文按 PHP 版本给出 Dom\HTMLDocument 与旧版兼容路径的选择方法。204 收藏 -
PHP grapheme_stripos 会按字素单位查找第一个大小写不敏感的匹配位置。本文说明 UTF-8 输入、offset、负偏移、locale 和 false 判断,并讨论高频搜索时如何控制扫描成本。201 收藏 -
用 Monolog 的 Logger、Handler 和日志级别把 PHP 业务日志与错误异常分层输出,同时控制 bubble、敏感字段、PHP 诊断入口和日志权限。196 收藏 -
PHP 8.2 的 Randomizer 能通过固定随机引擎、种子和调用顺序生成可复现序列。本文比较 Mt19937、Xoshiro256StarStar 与 Secure 的使用边界,并给出测试隔离和常见误区。194 收藏 -
PHP 跨层处理异常时,把底层 Throwable 作为自定义异常构造函数的第三个参数传入,再用 getPrevious() 向下遍历,就能同时保留业务语义和原始原因。188 收藏 -
从 pm.max_children、static/dynamic/ondemand、状态页、慢日志和 pm.max_requests 五个角度,说明 PHP-FPM worker 并发的容量边界与小步调参方法。172 收藏 -
PHP 8.3 起可用 mb_str_pad 按 Unicode 字符数补齐中文等多字节字符串。本文说明右侧、左侧和两侧补齐的参数写法,以及多字符填充串、版本和显示宽度边界。166 收藏 -
PHP Composer 的 config.platform 会把 PHP 与扩展版本作为虚拟平台参与依赖解析,但不会改变本机运行环境。本文用 composer.json、check-platform-reqs、platform-check 和忽略参数说明解析阶段与生产运行阶段的边界。160 收藏 -
PHP Composer 的 config.platform 只改变依赖解析时看到的平台版本,不能证明生产环境真的满足要求。本文用 composer.json、composer update 与 check-platform-reqs 拆开迁移检查,帮助确认目标 PHP 和扩展是否可以发布。137 收藏 -
用 ICU 规则字符串创建 PHP IntlRuleBasedBreakIterator,设置文本并读取边界与规则状态,同时说明 compiled 参数和中文分词边界。131 收藏