php教程技术文章
-
线上执行 composer install --no-dev 后找不到类,通常不是命名空间突然失效,而是类被声明在 autoload-dev 或依赖只放在 require-dev。本文按依赖边界定位并修正。460 收藏 -
PHP 默认文件会话会让同一用户的并发请求排队。本文从覆盖数据的故障现象出发,说明如何缩短 Session 锁定区间、区分只读与写入请求,并处理并发修改边界。458 收藏 -
PHP 表单提交失败时,如果只在页面顶部显示一串错误,用户很难知道该改哪个输入框。本文用 session flash 保存一次性校验结果,再通过 aria-describedby 将错误消息绑定到对应字段,覆盖重定向、刷新、成功提交和无障碍检查。455 收藏 -
用 PHP Generator 配合 PDO 逐行读取数据,再通过 fputcsv 写入输出流,避免把大数据集一次性组装成数组,并厘清驱动缓冲与输出缓冲的边界。449 收藏 -
PHP Closure::bindTo 不只是换一个 $this:newThis 决定对象,newScope 决定 private/protected 可见范围。本文用订单快照示例说明作用域切换、返回 null 的边界,以及测试中如何避免越过公开接口。448 收藏 -
用 PHP 8 的 Attribute::TARGET_PROPERTY 标记字段,再通过 ReflectionClass 和 ReflectionProperty::getAttributes() 精确找到目标属性,最后读取参数或实例化自定义 Attribute。448 收藏 -
用 PHP PharData 处理 tar 备份时,不能只检查压缩包能否打开,还要逐条校验归档路径,拒绝 ../、绝对路径和解包目录外的目标。本文给出打包、检查和安全解包的可运行边界。447 收藏 -
用 DateTimeImmutable 和明确的 IANA 时区计算月末,避开直接加月份的月底溢出,并封装成可复用的 PHP 函数。447 收藏 -
PHP 8.5 扩展了 #[\Deprecated] 的使用范围。本文用用户级方法、类常量和 trait 做一套可复查的弃用工作流,说明告警触发、Reflection 验收与旧版本兼容边界。446 收藏 -
PHP 8.5 CLI 新增 --ini=diff,可以只显示偏离内置默认值的 INI 配置。本文用开发、测试和生产环境核对场景,说明它与 --ini、php -i 的区别、读取层次、对比方法和采用边界。446 收藏 -
IntlDateFormatter 格式化 DateTime 时使用的是 formatter 自己的时区,而不是 DateTime 对象的时区。本文用共享 DateTimeZone、规范输入和核对 timezone id 的方式,排查 PHP 国际化日期显示相差数小时的问题。444 收藏 -
filter_input() 读取的是 PHP 从 SAPI 保存的原始外部输入,不会跟随脚本后续对 $_GET 的修改。本文用一个最小示例拆开两条读取路径,并说明什么时候改用 filter_var(),以及如何区分参数缺失、校验失败和有效的 0。443 收藏 -
Laravel 13 新增 Cloud Facade,可用 hosted 判断是否运行在 Laravel Cloud,用 usesManagedQueues 判断是否启用托管队列,并在确认配置后通过 queue 取得连接。本文给出边界清晰的封装方式与回退思路。439 收藏 -
PHP 8.3 的 json_validate() 返回 false 时,不要只看布尔值。本文用 JSON_ERROR_UTF8 与 JSON_ERROR_SYNTAX 区分非法编码和结构错误,并说明 JSON_INVALID_UTF8_IGNORE 的取舍。439 收藏 -
PHP 8.3 引入的 #[\Override] 可以在继承方法改名、接口调整或父类重构时尽早暴露契约断裂。本文用一个订单服务重构场景,拆解属性放置、编译期报错、接口实现和部署前回归检查。438 收藏