php教程技术文章
-
用 PHP 8 的 Attribute::TARGET_PROPERTY 标记字段,再通过 ReflectionClass 和 ReflectionProperty::getAttributes() 精确找到目标属性,最后读取参数或实例化自定义 Attribute。448 收藏 -
PHP Fiber::resume() 的参数会回到嵌套调用栈中的 Fiber::suspend(),而 Fiber 终止后的最终结果要通过 getReturn() 读取。本文用原创示例区分三种返回值,并对比 Fiber 与 Generator。344 收藏 -
PHP Fiber 挂起后,调用方可以用 Fiber::throw() 把异常注入当前 Fiber::suspend();本文用代码说明 Fiber 内部捕获、调用方兜底、状态判断和 getReturn() 的边界,并对比 Generator 的调用栈差异。193 收藏 -
用 PDO::ATTR_DEFAULT_FETCH_MODE 在连接创建时统一默认返回形态,再用语句级 FETCH_* 覆盖特殊查询,避免项目里反复写 fetch 参数。395 收藏 -
PDO::getAttribute 取不到值不等于驱动不可用。本文按驱动加载、连接身份、属性探测三层判断,并演示如何区分有效值、null 与 PDOException。476 收藏 -
Laravel 队列扣款任务要安全重试,需把数据库唯一键、事务提交时机、网关幂等键和查询优先策略放在同一条链路上,避免网络超时或 worker 重启造成重复扣款。326 收藏 -
Composer 报平台依赖不满足时,先用 check-platform-reqs 检查生产机真实 PHP 与扩展,再对照 composer.json 的 require、config.platform 和 lock 文件定位差异,避免用忽略平台要求掩盖运行时问题。264 收藏 -
DOMDocument 解析不可信 XML 时,默认不要打开实体替换和外部 DTD 加载;用 LIBXML_NONET 限制网络访问,并按 PHP/libxml 能力补充 LIBXML_NO_XXE。本文给出安全的最小配置、遗留 DTD 场景的隔离方式和升级检查清单。409 收藏 -
用 DateTimeImmutable 和明确的 IANA 时区计算月末,避开直接加月份的月底溢出,并封装成可复用的 PHP 函数。447 收藏 -
PHP 使用 stream_copy_to_stream 限制文件流复制长度时,应把字节上限传给 length,并区分 offset 起点、短流和 false 失败返回。359 收藏 -
PHP 启用 OPcache 预加载后,类定义会随 PHP-FPM 进程驻留。本文解释为什么普通缓存刷新不够,并给出配置确认、构建标记、FPM 重启和发布复查步骤。345 收藏 -
用 PHP 自定义 session handler 把序列化会话写入 Redis,并通过 SET NX EX、随机 token 和 TTL 处理并发写入与过期回收。110 收藏 -
讲清 PHP mysqli multi_query 如何用 more_results 和 next_result 遍历全部结果,并在切换前释放结果集、识别后续 SQL 错误。282 收藏 -
PHP PDO 绑定 LIMIT 报类型错误,通常是参数按字符串传给了预处理语句。本文说明如何校验分页输入、使用 PDO::PARAM_INT 绑定 LIMIT/OFFSET,并避免 execute 参数覆盖已有绑定。408 收藏 -
Generator 适合惰性迭代和流式数据,Fiber 适合暂停完整调用栈;真正的非阻塞 I/O 仍由事件循环和异步库负责。本文按任务形态说明三者如何组合。259 收藏