php教程技术文章
-
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 curl_multi 并发请求时,通过 curl_multi_info_read() 获取已完成的单个句柄,再结合 CURLOPT_PRIVATE、传输结果和 HTTP 状态准确归属与处理响应。223 收藏 -
PHP readonly 属性报错时,先看属性是否已初始化,再根据赋值作用域区分初始化失败、重复修改和间接修改。223 收藏 -
PHP backed enum 直接 json_encode 时默认输出 backing value,而不是 case 名称。本文用最小示例区分 name、value、from/tryFrom,并给出需要输出名称或二者并存时的 JsonSerializable 写法。221 收藏 -
PHP 解析未加引号的 JSON 长整数时,可能因类型选择落入浮点数。本文用 JSON_BIGINT_AS_STRING 保留完整数字,并说明异常处理、数组返回和业务层字符串边界。220 收藏 -
文章 · php教程 | 4天前 | HTTP · php教程 · stream_get_meta_data PHP Stream stream_get_wrappers HTTP wrapper 文件流识别
PHP stream 同时承载本地文件和 HTTP 等协议时,不能只看 stream_type 判断来源。本文用 stream_get_meta_data、stream_is_local 和 stream_get_wrappers 拆开 wrapper、底层实现、URI 与 seekable 的职责,给出文件流、HTTP 流及自定义 wrapper 的识别边界。217 收藏