php教程技术文章
-
PHP WeakMap 适合给对象绑定派生元数据而不延长对象生命周期。本文用生命周期故障场景拆解弱键、强值、回收和 SplObjectStorage 的边界,并给出可直接改写的 PHP 8 示例。133 收藏 -
PHP levenshtein 可分别配置插入、替换和删除代价。本文用短 ASCII 示例说明参数顺序、最小成本选择、方向差异,以及输入约束、阈值调整和配置回退方法。337 收藏 -
用 getopt 的 rest_index 找到选项解析停止位置,再通过 array_slice 读取 $argv 中的剩余位置参数,并区分第一个非选项与 -- 结束符。250 收藏 -
PHP 8.3 引入的 json_validate 可以只判断 JSON 语法是否有效,depth 参数用于限制嵌套深度。本文说明默认值、有效范围、ValueError 与 false 的区别,以及和 json_decode 保持参数一致的做法。378 收藏 -
用 Monolog 的 Logger、Handler 和日志级别把 PHP 业务日志与错误异常分层输出,同时控制 bubble、敏感字段、PHP 诊断入口和日志权限。196 收藏 -
PHP Composer 的 config.platform 只改变依赖解析时看到的平台版本,不能证明生产环境真的满足要求。本文用 composer.json、composer update 与 check-platform-reqs 拆开迁移检查,帮助确认目标 PHP 和扩展是否可以发布。137 收藏 -
PHP stream_filter 可以把多个过滤器串成读取链。本文说明 php://filter、stream_filter_append() 与 stream_filter_prepend() 的顺序、方向、失败返回值和资源关闭方式。423 收藏 -
PHP DOMDocument 读取不可信 XML 时,真正需要控制的是外部实体加载、实体替换和网络访问三个边界。本文给出兼容 PHP 8.x 的解析入口,并解释 LIBXML_NOENT、LIBXML_NONET、LIBXML_NO_XXE 与自定义实体加载器的组合关系。347 收藏 -
PHP str_increment 可递增数字字符串并保留未被转换丢失的前导零。本文说明返回值、进位扩宽、ASCII输入限制与旧运行时的处理边界。355 收藏 -
本文说明 PHP str_getcsv 怎样解析字段内的分隔符和双引号,如何显式设置 separator、enclosure、escape,以及 PHP 8.4 下怎样避免依赖默认 escape 参数。356 收藏 -
PHP DateTimeImmutable 直接加一个月时,月末日期可能溢出到下个月。本文用代码说明默认规则,并给出 last day of、DateInterval、不可变对象和边界测试的处理方法。280 收藏 -
PHP OPcache 预加载需要让完整版本、启动配置与进程生命周期保持一致。本文说明版本落盘、入口配置、新旧进程与回滚的部署顺序和限制。497 收藏 -
本文用 PHP Intl NumberFormatter 说明怎样按 locale 输出普通数字、货币和百分比,怎样设置小数位与舍入规则,以及如何处理格式化失败。351 收藏 -
PHP SplPriorityQueue 默认只提取数据。本文用一个任务调度小工具说明怎样设置 EXTR_BOTH,同时读取 data 与 priority,并区分 top、current、extract 的行为边界。420 收藏 -
PHP get_mangled_object_vars 会返回对象的各层级属性,但私有属性键会带声明类名,保护属性带星号,前后还有 NUL 字节。本文用一个对象检查场景说明键名解析、未初始化类型属性排除与兼容边界。239 收藏