php教程技术文章
-
PHP SplObjectStorage 可以按对象身份保存集合成员或附加数据。本文用 attach、contains、detach 还原对象生命周期,并补上 PHP 8.5 推荐的 offsetSet、offsetExists、offsetUnset 写法。323 收藏 -
PHP finfo_file 会依据文件内容推断 MIME 类型,但它不能替代上传状态检查、业务白名单和后续图片处理。本文拆解扩展名、浏览器声明与真实内容的边界,并给出可落地的 PHP 上传判断代码。323 收藏 -
PHP 校验回调签名或一次性令牌时,逐字符比较可能暴露时序差异。本文从 webhook 验签场景出发,说明 hash_equals 的参数顺序、长度边界、类型校验、原始字符串编码和失败审计,给出可直接落地的验收清单。322 收藏 -
PHP 8 起 ReflectionMethod::invokeArgs 会把字符串键解释为命名参数。本文用反射调用适配器说明位置键、命名键、默认值、引用参数和参数名变更的限制。315 收藏 -
PHP 8.4 的 #[\SensitiveParameter] 可以让异常回溯和参数转储避开密码、令牌等敏感值。本文用一个登录服务例子说明它的作用范围、调用链和上线前的日志核对方法。310 收藏 -
文章 · php教程 | 4星期前 | PHP · 时间处理 · 版本迁移 · PHP 8.4 · 时区 PHP 8.4 DateTimeImmutable::createFromTimestamp Unix 时间戳 微秒
PHP 8.4 新增 DateTimeImmutable::createFromTimestamp(),可以直接从整数或浮点 Unix 时间戳创建不可变时间对象。文章用订单事件时间场景拆解 UTC 基准、Asia/Shanghai 展示、微秒精度与旧版本兼容回退。307 收藏 -
PHP 处理大 CSV 时用 fopen 和 fgetcsv 流式读取,按 [null] 识别空行,校验列数后逐条导入,避免一次性载入整文件。306 收藏 -
SplFixedArray 用整数范围和手动扩容约束数组结构,适合容量边界明确的连续数据;普通 array 更适合需要追加、字符串键和灵活变更的业务代码。304 收藏 -
区分 PHP CLI 与 PHP-FPM 的 OPcache 配置和缓存上下文,给出配置、状态核对、代码变更刷新与部署边界的实用方法。304 收藏 -
PHP 8.2 起,给未声明属性赋值会触发动态属性弃用提示。本文用一个遗留 User 对象示范如何定位告警、优先声明属性,并在确有兼容需要时使用 #[\AllowDynamicProperties],最后用回归检查确认迁移没有吞掉拼写错误。303 收藏 -
PHP array_filter 不传回调时会按空值语义过滤整数 0 和字符串 0。本文用表单与统计数据场景演示如何通过显式回调保留 0,区分 null、空字符串和 false,并在需要时用 array_values 重建连续索引。300 收藏 -
bindParam 绑定的是变量引用,真正取值发生在 execute 时。循环中反复改写或复用变量时,容易让多个参数都落到最后一次值;本文用批量写入示例说明原因,并给出 bindValue 与固定变量复用两种稳定写法。298 收藏 -
用一个可运行的 PHP 示例说明 preg_match_all、PREG_SET_ORDER 与命名捕获组如何共同决定 matches 数组结构,并梳理常见误读和边界。290 收藏 -
以 PDO_MYSQL 为例,说明如何关闭模拟预处理、设置异常模式、验证参数绑定,并排查驱动、占位符和 SQL 标识符边界。288 收藏 -
PHP 的 parse_str() 不会把同名普通参数自动收集成数组;需要用方括号命名,并通过第二个参数接收结果。本文用可运行示例核对覆盖规则、键名转换和 max_input_vars 边界。282 收藏