php教程技术文章
-
文章 · php教程 | 5小时前 | 面向对象 · php教程 · PHP 8.4 · 兼容性迁移 · 动态属性 PHP 8.4 AllowDynamicProperties PHP迁移 deprecated
PHP 8.2 起,给未声明属性赋值会触发动态属性弃用提示。本文用一个遗留 User 对象示范如何定位告警、优先声明属性,并在确有兼容需要时使用 #[\AllowDynamicProperties],最后用回归检查确认迁移没有吞掉拼写错误。303 收藏 -
PHP PDO 的 FETCH_GROUP 适合把同一分类的多条记录聚在一起,FETCH_UNIQUE 则把唯一键映射成单条记录。本文用商品分类查询拆开两种结果结构、重复键覆盖风险、空结果验收与最小可运行写法。244 收藏 -
用 PHP XMLReader 按游标读取超大 XML,区分 read、next 和 expand 的职责,控制节点处理和内存释放边界。331 收藏 -
文章 · php教程 | 16小时前 | 错误处理 · HTTP · PHP · 接口调用 · stream context · php Http请求 重定向 超时 stream_context_create
用 PHP stream_context_create 为 HTTP 请求设置超时、重定向上限和失败响应读取规则,再通过响应头与状态码完成可复现验收。427 收藏 -
用一个可复现的 PHP Fiber 示例排查 start、suspend、resume 和 getReturn 的状态边界,避免重复恢复与未完成读取。149 收藏 -
PHP Closure::bindTo 不只是换一个 $this:newThis 决定对象,newScope 决定 private/protected 可见范围。本文用订单快照示例说明作用域切换、返回 null 的边界,以及测试中如何避免越过公开接口。448 收藏 -
PHP 8.4 为用户定义的函数、方法和类常量提供 #[\Deprecated] 属性。本文用一个兼容旧调用方的 PHP 示例,说明如何标注替代方案、用反射核对元数据,并把弃用提示接入 CI。382 收藏 -
PHP 的 stream_get_contents 会从当前资源指针继续读取;第一次读到 EOF 后,第二次自然得到空字符串。本文用 PHP 内存流说明指针位置、offset 参数、rewind 与 feof 的关系,并给出可复查的读取写法。424 收藏 -
文章 · php教程 | 21小时前 | 数据校验 · php教程 · PHP 8.4 · 对象设计 · PHP 8.4 Property Hooks 金额校验 set 访问器 InvalidArgumentException
PHP 8.4 property hooks 可以把金额字段的归一化和范围校验放在属性写入边界。本文用订单金额对象演示 set 访问器、异常回滚、构造初始化和 PHP 8.3 兼容写法。499 收藏 -
文章 · php教程 | 1天前 | pdo · php教程 · 数据库安全 · 预处理语句 · 参数绑定 · php pdo 命名参数 ATTR_EMULATE_PREPARES PDOStatement参数调用 HY093
关闭 PDO::ATTR_EMULATE_PREPARES 后,同一个命名参数在一条 SQL 中重复出现可能触发 HY093。本文用价格区间查询拆开 PDO::prepare、PDOStatement 参数调用与唯一占位符的边界,并给出可验证的改写方式。199 收藏 -
批量导入校验里,str_contains 的空字符串行为很容易把缺失字段和任意内容混在一起。本文从一条失败记录开始,拆解 trim、str_contains 与 empty 的判断边界,并给出可回退到旧版 PHP 的写法。276 收藏 -
PHP Generator 使用 yield from 委托子迭代器时,外层遍历拿到的是 yield 值,子 Generator 的 return 值要等委托完成后通过 getReturn 读取。本文用可运行示例说明调用链、完成条件和常见误区。161 收藏 -
用一个可运行的 PHP 示例说明 preg_match_all、PREG_SET_ORDER 与命名捕获组如何共同决定 matches 数组结构,并梳理常见误读和边界。290 收藏 -
PHP 对象持久化从 __sleep/__wakeup 迁移到 __serialize/__unserialize 时,真正需要处理的是字段版本、缺失字段和不可信输入。本文用一个订单快照对象拆开保存格式、兼容恢复与验收边界。176 收藏 -
PHP 8.4 属性钩子适合做属性级归一化,但默认值、构造函数赋值和可空类型的执行边界很容易混在一起。本文用配置对象拆开初始化顺序,并给出可运行的验证与旧版本回退写法。198 收藏