php教程技术文章
-
PHP Fiber::throw() 的关键不是从外部直接改写协程代码,而是在 Fiber 已挂起时,把 Throwable 重新交给当前 Fiber::suspend() 调用点。本文用一个可取消的协程调度场景说明挂起门槛、异常捕获、FiberError 和终止状态之间的关系。166 收藏 -
PHP WeakMap 用对象作为弱键保存附加数据,对象不再被其他代码引用后,关联条目也可以自然消失。本文通过请求元数据缓存说明对象身份、引用关系、清理边界、常见误区和选型场景。482 收藏 -
PHP enum 新增项可能让旧 match 遗漏分支。本文区分合法枚举项与外部非法值,用集中展示映射、明确业务拒绝和完整代码说明 default 的边界与取舍。383 收藏 -
PHP 需要根据运行时类名和参数数组创建对象时,可以用 ReflectionClass::newInstanceArgs。本文从最小示例开始,说明参数传递、白名单工厂、异常边界和验收方式。399 收藏 -
文章 · php教程 | 3天前 | JSON · 枚举 · php教程 · 语言特性 · php enum json_encode JsonSerializable backed enum JSON API
PHP backed enum 用 json_encode 时默认输出它的 string 或 int backed value;pure enum 不能直接编码为 JSON。本文说明默认序列化、JsonSerializable 覆盖、数组与 DTO 组合、错误处理和接口兼容演进。177 收藏 -
Laravel 配置缓存后修改 .env 不生效,通常与配置快照或长驻进程有关。本文用最小示例说明 env 与 config 的读取范围,以及开发、部署、队列和 Octane 的更新边界。134 收藏 -
文章 · php教程 | 4天前 | 异常处理 · PHP · HTTP客户端 · php Symfony HTTP客户端 连接超时 httpclient 响应超时 max_connect_duration max_duration
PHP Symfony HttpClient 的 timeout、max_connect_duration 和 max_duration 解决的是不同等待问题。本文用最小示例说明如何分别限制建连、响应空闲和完整请求时长,并处理懒加载响应中的传输异常。148 收藏 -
PHPUnit 数据提供器不会自动复制参数里的可变对象。本文从共享引用、独立 fixture、浅克隆、嵌套对象、静态缓存和命名数据集几个边界出发,说明怎样让每个数据集拥有自己的测试状态。313 收藏 -
PSR-7 请求体是带游标的 StreamInterface,getContents() 读取后可能到达末尾。本文区分 getContents、__toString、rewind 和 seek(0),说明如何判断可回退能力,并在不可回退时用新流和 withBody() 让签名校验、日志与业务解析共享请求内容。123 收藏 -
PHP Composer 报依赖冲突时,不要先盲目降级。本文从 composer.json 的直接约束、传递依赖、composer.lock 锁定版本和 PHP 平台要求入手,用 prohibits/why-not 找到阻塞链,再用最小范围更新恢复可复现安装。304 收藏 -
PHP Fibers 保存可挂起的调用栈,需要明确调用方或调度器恢复,不等于线程并行。本文用嵌套计算示例区分挂起值、恢复值与最终返回,说明阻塞I/O和清理边界。472 收藏 -
文章 · php教程 | 4天前 | 工程实践 · php教程 · php redis Symfony Cache 缓存标签 TagAwareCacheInterface invalidateTags
Symfony Cache 的标签失效适合处理一个业务对象对应多个缓存键的场景。本文从直接删除、标签失效与 TTL 的边界出发,说明怎样设计标签、配置 TagAwareCacheInterface,并把失效动作放到稳定的写路径中。175 收藏 -
PHP password_hash 的 cost 不宜照抄别人的数字。本文用一个小型登录模块说明如何在接近生产的机器上选择 bcrypt cost,并把 password_verify 与 password_needs_rehash 接入渐进升级流程。100 收藏 -
用 PHP DateTimeImmutable 处理跨时区时间时,关键是显式传入 DateTimeZone,并接住 setTimezone 和 modify 的返回值。本文从瞬时时刻、显示时区、输入边界和不可变对象传递说明怎样隔离时区副作用。409 收藏 -
PHP PDO 动态 IN 查询应为每个值生成独立占位符,再按类型绑定。本文以多选筛选说明空列表、整数ID、参数位置、租户权限与大列表边界,提供原创查询函数。372 收藏