php教程技术文章
-
PHP 8.5 的 clone() with 可以在复制对象时更新属性,适合构造不可变 DTO 的新版本。本文用订单快照场景拆解浅拷贝、嵌套对象共享和 readonly 属性的兼容边界。237 收藏 -
PHP 命令行里能读到的环境变量,到了 PHP-FPM 页面却变成空值,通常不是代码随机失效,而是 SAPI、php.ini、FPM pool 和 Web 服务器传递链路不同。本文用一套可复查的核对流程定位差异,并给出安全的配置边界。237 收藏 -
围绕 PHP 8.6 已接受的会话安全默认值变更,核对 strict_mode、HttpOnly、SameSite 对旧项目登录、跨站回调和自定义会话处理器的影响。237 收藏 -
PHP filter_input 读取的是请求进入 PHP 时的原始输入快照,不会跟随代码后面对 $_GET 或 $_POST 的修改。本文用最小示例说明读取边界,并给出改用 filter_var、区分 null 与 false、处理数组参数的排查方案。237 收藏 -
Laravel 13 的 JSON:API Resource 不只是把数组换成 data。本文用一组订单接口示例拆开资源类、资源集合、type/id、relationships、links/meta 与旧客户端兼容边界,给出可回滚的迁移写法。236 收藏 -
PHP 属性通过 Reflection API 读取时,getAttributes() 得到的不是属性对象,而是 ReflectionAttribute 描述。本文用路由元数据场景拆开重复属性筛选、参数读取、newInstance() 实例化和构造参数校验的边界。235 收藏 -
PHP 的 SameSite=None 必须配合 Secure,本地 HTTP、localhost 例外和跨站请求条件又不完全相同。本文用配置示例和排查清单说明为什么 Cookie 看似设置成功却没有随下一次请求发送。234 收藏 -
PHP 8.4 属性钩子适合集中处理单属性的清洗、类型边界和局部校验,但跨字段规则与数据库副作用不应塞进 get/set。本文用订单行示例拆分属性钩子、命名构造器和服务层的职责。233 收藏 -
解释 PHP OPcache preload 的启动时机、preload.php 写法、PHP-FPM 重启边界和部署排查清单,帮助项目避免把普通缓存刷新误当成预加载刷新。233 收藏 -
DateTimeImmutable 的 modify() 不会改写原对象,而是返回新的日期对象。本文用 PHP 示例说明如何接住返回值、如何选择 DateTime 与 DateTimeImmutable,并提醒月末运算和异常处理边界。232 收藏 -
PHP 8.5 引入的 Uri\Rfc3986\Uri 能把带端口的地址拆成可读取字段,并通过不可变对象安全生成新端口版本。本文用一个内网 API 地址说明 getPort、withPort、toString 的配合方式,以及缺少端口和非法 URI 的处理边界。232 收藏 -
PHP array_is_list([]) 会返回 true,因为空数组没有违反从 0 开始且连续排列的键规则。本文对照空洞、乱序和字符串键,并给出 PHP 8.1 以前的兼容判断写法。229 收藏 -
将自然日输入从时间点语义中分离,显式设置时区、严格解析日期并接收不可变对象返回值,避免换环境导致订单日期偏移。227 收藏 -
PHP 8.4 属性钩子可以把读取格式化与写入校验拆开。本文用一个可复用的值对象示例说明 get、set、virtual property、backing value 和反射验证之间的关系。226 收藏 -
PHP 8.4 引入 Lazy Objects,本文用 ReflectionClass::newLazyGhost() 和 newLazyProxy() 拆解延迟初始化、构造函数边界、触发时机与序列化检查,给出可回归的最小示例。224 收藏