php教程技术文章
-
PHP 8.5 扩展了 #[\Deprecated] 的使用范围,可以标记 trait 和常量。本文从旧 API 迁移现场出发,用函数、trait、类常量和全局常量示例,验证 E_USER_DEPRECATED、Reflection 与版本兼容边界。239 收藏 -
文章 · php教程 | 1个月前 | WEB开发 · 文件上传 · PHP · PHP 文件上传 move_uploaded_file MIME finfo_file is_uploaded_file
PHP 文件上传不能只看扩展名和浏览器传来的 MIME 字段。本文用 finfo_file() 检查临时文件的真实类型,再配合大小、错误码、is_uploaded_file() 和 move_uploaded_file() 建立一条可验证的上传边界,并说明校验通过后仍要如何限制保存路径和访问方式。117 收藏 -
文章 · php教程 | 1个月前 | WEB开发 · 错误处理 · PHP · PHP 8.5 · 异常排查 · set_error_handler PHP 8.5 get_error_handler restore_error_handler 错误处理器
PHP 8.5 新增 get_error_handler(),可以读取当前注册的错误处理器,适合排查框架中间件、临时兜底和恢复顺序问题。本文用一条被吞掉的警告为例,说明它与 set_error_handler()、restore_error_handler() 的配合方式及边界。292 收藏 -
PHP 8.5 的 array_last() 可以直接取得数组最后一个值,空数组返回 null,且不依赖连续数字下标。本文用事件列表场景拆解非连续键、空值判断和 PHP 8.4 及更早版本的兼容写法。479 收藏 -
PHP 8.5 的 array_last() 可以直接取得数组最后一个值,空数组返回 null,且不依赖连续数字下标。本文用事件列表场景拆解非连续键、空值判断和 PHP 8.4 及更早版本的兼容写法。501 收藏 -
PHP 8.5 内置 URI 扩展后,处理回调地址、分页链接和相对路径不必只依赖 parse_url。本文用 Uri\Rfc3986\Uri 对比旧写法,拆解规范化、resolve、查询串修改和上线前兼容检查。323 收藏 -
后台权限代码最怕把未知角色当成普通用户继续执行。本文用 PHP 8.2 枚举定义角色和动作,通过显式策略映射、拒绝默认分支与审计日志,把权限判断做成可测试、可追踪的边界。495 收藏 -
PHP-FPM 文件上传接口出现磁盘告警时,先从 upload_tmp_dir、is_uploaded_file、move_uploaded_file 和异常回收入手,建立可观测、可回滚的临时文件处理流程。357 收藏 -
PHP 8.5 新增 #[NoDiscard] 属性,可以在调用方忽略关键返回值时给出警告。本文从一个被吞掉的校验结果切入,说明属性的适用边界、(void) 豁免方式和升级到 PHP 8.5 前后的验证清单。390 收藏 -
文章 · php教程 | 1个月前 | 性能 · 面向对象 · PHP · PHP 8.4 · ReflectionClass PHP 8.4 Lazy Objects newLazyGhost newLazyProxy PHP懒加载
PHP 8.4 的 Lazy Objects 把延迟初始化交给 ReflectionClass。文章用订单详情对象演示 Ghost 与 Proxy 的差异、哪些操作会触发初始化,以及如何用 isUninitializedLazyObject 和最小测试确认边界。310 收藏 -
用 PHP mysqli 把 CSV 导入 MySQL 时,不要一次性读完整文件。本文用分批读取、参数绑定和事务回滚做一个可验收的小工具,并说明内存、重复数据和失败续跑的边界。487 收藏 -
PHP 8.3 的 readonly class 适合承载不可变请求 DTO,但它不会自动完成 JSON 类型校验。本文从订单请求反序列化出发,说明构造器边界、字段校验、异常响应与版本兼容检查。105 收藏 -
不引入完整容器,也可以用 PHP 8 属性和反射做一个可控的轻量依赖注入容器。文章从构造器参数解析、服务注册、单例边界和测试替身四个角度,给出可运行的小实现,并说明哪些场景不该继续扩展。262 收藏 -
PHP PDO 事务里最容易误判的不是 beginTransaction,而是异常有没有真正离开业务边界、commit 是否只发生一次,以及回滚后调用方是否仍把失败当成功。本文用订单扣库存场景拆开这些边界。329 收藏 -
Webhook 只校验 HMAC 签名还不够,攻击者仍可重复发送一份合法请求。本文用 PHP 8、hash_hmac、hash_equals 和 MySQL 唯一索引,搭建时间窗、nonce、幂等记录与失败回退的完整防护流程。335 收藏