php教程技术文章
-
PHP 8.2 引入 readonly class 后,子类并不能像普通类一样随意继承。本文用最小示例说明只读继承、属性类型、静态属性与动态属性的限制,并给出迁移和验证清单。223 收藏 -
PHP 7.4+ 可用 ReflectionReference::fromArrayElement() 判断数组元素是否为引用,再严格比较 getId() 判断两个元素是否共享同一引用。本文覆盖非引用、缺失键、foreach 残留引用与解除引用后的反向验证。376 收藏 -
文章 · php教程 | 1星期前 | php教程 · PHP 8.4 · php ReflectionClass newLazyGhost newLazyProxy lazy object 重量级服务
PHP 8.4 的 lazy object 可以把重量级服务推迟到首次真正使用时创建。本文用 newLazyGhost 说明原地初始化,再对比 newLazyProxy、状态检查、显式初始化和序列化边界。202 收藏 -
文章 · php教程 | 1星期前 | 面向对象 · PHP · PHP 8.4 · PHP非对称属性可见性 private(set) protected(set) PHP 8.4属性 PHP对象封装
PHP 8.4 的非对称属性可见性可以让属性公开读取、限制写入。本文用对象边界、领域方法、继承、数组与引用规则解释 private(set) 和 protected(set) 的生产用法,并给出迁移检查清单。216 收藏 -
PHP WeakMap 能以对象为键保存临时附加元数据,而且键不会增加对象引用计数。本文通过一个 MetadataRegistry 小项目演示写入、读取、自动移除与验收,并说明它和 SplObjectStorage 的选择边界。227 收藏 -
PHP Fiber 不会自动把阻塞 I/O 变成异步,却能把回调结果通过 suspend、resume 与 throw 交回同步调用栈。本文用最小事件循环实现 await 适配器,并说明异常传播和生产边界。272 收藏 -
说明 PHP readonly class 的真实边界,对比配置快照、值对象和领域实体的生命周期,并给出可变实体组合只读值对象的实用建模方案。178 收藏 -
文章 · php教程 | 1星期前 | PHP · php-fpm · PHP OPcache opcache_reset validate_timestamps revalidate_freq opcache_invalidate
PHP 发布新代码后仍执行旧脚本,应先从实际承载请求的 PHP-FPM 读取有效配置,再检查 validate_timestamps、revalidate_freq、发布绝对路径、file_cache 与 preload。本文给出受保护诊断代码、刷新方式选择和多实例排查清单。382 收藏 -
从 Throwable、Exception、Error 和诊断错误的边界出发,整理 PHP 入口处理器、日志记录、生产响应与最小回归检查的统一方案。117 收藏 -
PHP 文件上传不能只看文件名后缀,应在保存前同时检查上传错误码、服务端文件大小、扩展名白名单和 Fileinfo 检测出的 MIME,并使用随机文件名与 move_uploaded_file 落盘。本文给出完整处理器、表单接入和验收清单。167 收藏 -
用 DateTimeImmutable 和 IANA 时区处理跨时区预约:解析时明确来源时区,保存统一 UTC,展示时再转换,并说明夏令时不存在和重复时间的处理边界。448 收藏 -
Composer 依赖冲突的核心是多个版本约束没有共同候选。先用 prohibits/why-not 还原阻塞路径,区分普通包与 PHP、扩展等平台依赖,再通过局部 update、-W、--minimal-changes 与 dry-run 控制最小调整面。341 收藏 -
解释 PHP Session 文件锁让同一用户并发请求排队的原因,并用 read_and_close 与 session_write_close 缩短持锁区间,区分会话锁和数据库一致性控制。305 收藏 -
PHP 处理百万行 CSV 的关键不是把文件换成生成器语法,而是建立流式读取、单行编码规范化与异常旁路三个边界。本文给出可直接改造的 fgetcsv + Generator 写法,并解释 BOM、源编码、列数错误、空行、批量写入与内存反例。284 收藏 -
用 PHP Attribute 为控制器方法声明路由元数据,再通过 Reflection 生成一次性路由表,覆盖读取、缓存、HTTP 方法区分和重复路由冲突处理。413 收藏