php教程技术文章
-
PHP Fiber 中的恢复值和最终返回值不是同一个概念。本文用 start、suspend、resume、getReturn 和状态判断说明如何安全接收恢复入参,并在 Fiber 终止后读取回调 return。120 收藏 -
Composer 在生产环境通常应先用 --optimize 生成 classmap,再根据是否存在运行时生成类决定使用 authoritative classmap 或 APCu。本文围绕 dump-autoload 给出部署命令、取舍和最小检查清单。118 收藏 -
PHP IntlCalendar::fieldDifference 可以按年、月、日、小时等指定字段计算两个时刻的有符号差值。本文说明逐层调用顺序、对象变更、时区和月份边界,以及何时应改用时间戳差值。118 收藏 -
从 Throwable、Exception、Error 和诊断错误的边界出发,整理 PHP 入口处理器、日志记录、生产响应与最小回归检查的统一方案。117 收藏 -
PHP 测量短代码耗时时,优先用 hrtime() 获取单调高精度时间,再用结束值减开始值并明确换算单位。本文说明数组与整数返回形态、与 microtime() 的区别、失败处理和性能采样边界。116 收藏 -
PHP 8.5 已移除 disable_classes。本文从运行入口、配置文件、CLI 与 PHP-FPM 差异出发,给出遗留配置定位、应用影响排查和替代策略,避免把旧的禁用类假设误当成当前运行时能力。115 收藏 -
PHP OptionsResolver 用 setAllowedTypes() 限制选项类型,用 setAllowedValues() 限制枚举或闭包业务规则;继承配置时用 addAllowedTypes() 和 addAllowedValues() 保留父类范围。本文给出组合写法、Symfony 7.3+ 联合类型边界和 InvalidOptionsException 排查方法。114 收藏 -
讲清 PHP hash_equals 的参数顺序、长度边界与 hash_hmac 输出格式,给出回调签名校验的原创示例。112 收藏 -
PHP 导出 CSV 时不要用 implode 直接拼接字段。使用 fputcsv 让包含逗号、双引号和换行的字段自动加包围符,并显式把 escape 设为空字符串,避免 PHP 专有转义机制影响标准 CSV 兼容性。111 收藏 -
PHP 8.4 的 array_find 只返回命中的值,想同时取得键和值时,应先用 array_find_key 得到键,再回查原数组;这种写法还能区分未命中与命中 null。110 收藏 -
PHP PDO::ATTR_ORACLE_NULLS 控制取数阶段如何处理空字符串、NULL 与普通文本。本文比较三种模式,给出设置、读取和排查方法。109 收藏 -
PHP MultipleIterator 默认要求所有子迭代器同时有效。本文用 MIT_NEED_ANY 和 MIT_KEYS_ASSOC 演示如何并排遍历长度不同的集合,并处理缺失字段、null、关联键名和边界条件。107 收藏 -
PHP 7.3+ 可在 session_set_cookie_params 的 options 数组中设置 samesite。多数站点从 Lax 起步;Strict 更严格;确需跨站会话时才用 None,并同时启用 Secure。本文给出完整代码、响应头验证、故障处理和回滚清单。105 收藏 -
PHP 8.5 允许 Deprecated 属性标记类外编译期常量。本文用一个可迁移的例子说明属性写法、弃用提示、ReflectionConstant 盘点与旧版本兼容边界。105 收藏 -
PHP OPcache preload 在服务器进程启动时把类与函数载入持久内存,预加载实体不会像普通脚本那样随时间戳检查刷新。本文说明为什么改代码后必须重建 PHP-FPM 进程,以及如何做可观测、可回退的发布。104 收藏