php教程技术文章
-
用 IntlDateFormatter 处理本地化日期时,真正容易出错的是格式器时区覆盖 DateTime 时区,以及 ICU 模式和 date() 模式不同。本文用 Asia/Shanghai 与 UTC 的可验证示例说明初始化、核对和边界处理。260 收藏 -
用 PHP curl_multi_exec 批量发送 HTTP 请求,正确轮询 curl_multi_info_read、等待 curl_multi_select、读取 curl_multi_getcontent,并区分多句柄错误、单请求错误和 HTTP 状态。260 收藏 -
Generator 适合惰性迭代和流式数据,Fiber 适合暂停完整调用栈;真正的非阻塞 I/O 仍由事件循环和异步库负责。本文按任务形态说明三者如何组合。259 收藏 -
PHP 调用 session_regenerate_id() 返回 false 时,不要立即销毁旧会话。本文给出前置检查、旧数据保留、失败原因记录和成功/失败分支处理方法。258 收藏 -
PHP backed enum 会把 case 的显式 value 作为 JSON 标量输出。本文用字符串枚举说明定义、序列化、反序列化和自定义 JsonSerializable 的边界。258 收藏 -
PHP 日期计算里,1 月 31 日加一个月并不一定得到 2 月最后一天。本文对比 DateTimeImmutable 的 modify、显式锚定月初再回退一天等写法,给出可验证的选择边界。254 收藏 -
PHP Generator 结束后进程内存没有回落,往往不是 yield 本身泄漏,而是迭代器仍被引用、foreach 引用残留或 finally 尚未完成。本文用可复现实验拆解判断顺序。254 收藏 -
修改 Composer 的 PSR-4 自动加载映射后,为什么还会 Class not found?本文用 composer.json、vendor/composer 生成文件和 class_exists 检查,说明 dump-autoload 的作用、生产优化参数与常见排查边界。253 收藏 -
PHP 8.5 升级排查不要只盯动态属性。本文把 PHP 8.5 新弃用与 PHP 8.2 动态属性历史问题分开,用 E_ALL 日志、源码扫描和测试矩阵定位受影响代码。251 收藏 -
文章 · php教程 | 2星期前 | postgresql · PHP · MariaDB · 向量数据库 · Laravel PostgreSQL MariaDB Laravel 13 AsVector 向量字段 Eloquent Cast
Laravel 13 的 AsVector 将 Eloquent 向量字段统一成 PHP 浮点数组,但 MariaDB 使用小端 float32 二进制、PostgreSQL 兼容实现使用 JSON 文本;理解写入、读取和查询绑定边界,才能安全迁移向量存储。250 收藏 -
PHP Fiber 的异常不是由 resume 返回,而是从 Fiber::suspend() 的暂停点重新抛出;本文用一个最小任务调度器说明 start、resume、throw 的关系和终止边界。246 收藏 -
PHP 8.3 的 readonly 类能固定对象属性绑定,但集合对象仍可能被内部修改。本文用购物车快照示例说明浅拷贝、深拷贝、clone 重初始化和运行时不变量的边界。245 收藏 -
PHP PDO 的 FETCH_GROUP 适合把同一分类的多条记录聚在一起,FETCH_UNIQUE 则把唯一键映射成单条记录。本文用商品分类查询拆开两种结果结构、重复键覆盖风险、空结果验收与最小可运行写法。244 收藏 -
文章 · php教程 | 1星期前 | 错误处理 · php教程 · 接口排查 · php json_decode json_last_error JSON_THROW_ON_ERROR JSON_ERROR_NONE
解释 PHP json_decode 返回 null 的两种含义,演示如何用 json_last_error、错误码和 JSON_THROW_ON_ERROR 区分合法 JSON null 与语法、编码、深度解析失败。239 收藏 -
围绕 PHP 8.6 已接受的会话安全默认值变更,核对 strict_mode、HttpOnly、SameSite 对旧项目登录、跨站回调和自定义会话处理器的影响。237 收藏