php教程技术文章
-
SplObjectStorage 用对象身份管理集合或对象到数据的映射。删除前先用 contains 确认目标,能把重复删除、错误对象和遍历期间修改这些边界分开处理;本文用一个观察者注册表示范安全的 detach 流程。270 收藏 -
在 Symfony 4.4 里,如果给带有 doctrine.event_subscriber 标签的服务直接设 Mock,通常会撞上“Service is already initialized”这个异常。问题不在 Mock 本身,而在于 Doctrine 的订阅器会在容器构建阶段就被 Conta269 收藏 -
文章 · php教程 | 3星期前 | session · php教程 · php SessionHandlerInterface session.use_strict_mode validateId
解释 PHP session.use_strict_mode 与自定义 session handler 的配合边界,给出 validateId、read、write、create_sid 和 updateTimestamp 的职责划分与数据库 handler 示例。269 收藏 -
Laravel 13 新增 AsVector Eloquent cast,把模型中的 PHP 浮点数组与 MariaDB 二进制向量、PostgreSQL 兼容文本值隔开,并为 MariaDB 向量距离查询转换绑定值。本文说明声明方式、跨数据库边界和常见反例。266 收藏 -
Composer 报平台依赖不满足时,先用 check-platform-reqs 检查生产机真实 PHP 与扩展,再对照 composer.json 的 require、config.platform 和 lock 文件定位差异,避免用忽略平台要求掩盖运行时问题。264 收藏 -
PHP PDO 不能用一个占位符直接绑定 IN 条件中的数组。本文用位置参数和命名参数说明如何按数组长度生成占位符,并处理空数组、整数类型和动态字段边界。263 收藏 -
通过一次请求头和超时不生效的排障过程,讲清 PHP stream_context 的数组层级、file_get_contents 传参位置、POST 请求、错误响应与重定向边界。263 收藏 -
不引入完整容器,也可以用 PHP 8 属性和反射做一个可控的轻量依赖注入容器。文章从构造器参数解析、服务注册、单例边界和测试替身四个角度,给出可运行的小实现,并说明哪些场景不该继续扩展。262 收藏 -
文章 · php教程 | 3星期前 | 反射 · php教程 · ReflectionParameter getAttributes PHP attributes Attribute::IS_REPEATABLE 重复属性
PHP 重复 Attribute 不能靠读取端猜测,必须先在属性类声明中加入 Attribute::IS_REPEATABLE,再用 ReflectionParameter::getAttributes() 取得全部实例,并根据 getArguments 或 newInstance 的需要选择读取方式。261 收藏 -
讲清 PHP DateTime 的来源时区、目标时区与瞬时时刻,使用 setTimezone 和 DateTimeImmutable 完成不改变时间戳的时区转换,并给出偏移量、时间戳和夏令时回归检查清单。261 收藏 -
用 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 收藏 -
PHP WeakMap 的对象键不会增加对象引用计数;当外部最后一个强引用消失后,对象可被回收,对应条目也会自动移除。本文用派生元数据缓存示例解释机制、验证方式和常见隐藏引用。260 收藏 -
Generator 适合惰性迭代和流式数据,Fiber 适合暂停完整调用栈;真正的非阻塞 I/O 仍由事件循环和异步库负责。本文按任务形态说明三者如何组合。259 收藏 -
PHP 调用 session_regenerate_id() 返回 false 时,不要立即销毁旧会话。本文给出前置检查、旧数据保留、失败原因记录和成功/失败分支处理方法。258 收藏