php教程技术文章
-
PHP 8.3 起可以在 __clone() 中重新初始化 readonly 属性。本文用对象复制场景说明作用域、深浅拷贝、间接修改和版本兼容边界。473 收藏 -
PHP WeakMap 没有单独的生命周期配置项,条目是否消失取决于键对象是否还存在强引用。本文用最小复现和排查清单定位 count 不变化、条目提前消失等问题。472 收藏 -
PHP 8.4 的 lazy proxy 不应通过读取属性来判断是否已加载,因为读取本身可能触发 factory。本文用 ReflectionClass::isUninitializedLazyObject() 做无副作用检查,再说明 initializeLazyObject() 的显式初始化和 proxy、真实实例的身份边界。468 收藏 -
PHP backed enum 处理请求参数时,from() 失败会抛出 ValueError,tryFrom() 失败返回 null。本文说明如何清洗外部值、映射稳定业务错误,并让领域服务只接收合法枚举。467 收藏 -
PHP 8.6 为 ReflectionProperty 增加 isReadable 与 isWritable。本文拆开 scope、object、hooks、readonly 和未初始化状态,说明检测结果能判断什么,以及为什么不能保证实际读写一定成功。465 收藏 -
PHP 8.6 闭包优化 RFC 只把无状态闭包缓存部分合入。本文从 static、变量捕获、static 变量和对象绑定四个边界说明旧项目如何判断是否适合升级。463 收藏 -
用 PHP backed enum 稳定映射数据库状态值,覆盖旧编码兼容、tryFrom 边界、分批回填与未知状态处理。461 收藏 -
线上执行 composer install --no-dev 后找不到类,通常不是命名空间突然失效,而是类被声明在 autoload-dev 或依赖只放在 require-dev。本文按依赖边界定位并修正。460 收藏 -
PHP 默认文件会话会让同一用户的并发请求排队。本文从覆盖数据的故障现象出发,说明如何缩短 Session 锁定区间、区分只读与写入请求,并处理并发修改边界。458 收藏 -
用 PHP Generator 配合 PDO 逐行读取数据,再通过 fputcsv 写入输出流,避免把大数据集一次性组装成数组,并厘清驱动缓冲与输出缓冲的边界。449 收藏 -
用 PHP 8 的 Attribute::TARGET_PROPERTY 标记字段,再通过 ReflectionClass 和 ReflectionProperty::getAttributes() 精确找到目标属性,最后读取参数或实例化自定义 Attribute。448 收藏 -
用 DateTimeImmutable 和明确的 IANA 时区计算月末,避开直接加月份的月底溢出,并封装成可复用的 PHP 函数。447 收藏 -
IntlDateFormatter 格式化 DateTime 时使用的是 formatter 自己的时区,而不是 DateTime 对象的时区。本文用共享 DateTimeZone、规范输入和核对 timezone id 的方式,排查 PHP 国际化日期显示相差数小时的问题。444 收藏 -
filter_input() 读取的是 PHP 从 SAPI 保存的原始外部输入,不会跟随脚本后续对 $_GET 的修改。本文用一个最小示例拆开两条读取路径,并说明什么时候改用 filter_var(),以及如何区分参数缺失、校验失败和有效的 0。443 收藏 -
PHP 8.4 的 ReflectionClass::newLazyGhost 适合把昂贵对象初始化推迟到真正访问时,本文用场景、代码和触发边界说明 ghost 与 proxy 的选型。442 收藏