php教程技术文章
-
PHP 8 中读取自定义 attributes,核心是先用 Reflection 获取 ReflectionAttribute,再按名称筛选,最后在需要时调用 newInstance() 得到属性对象。398 收藏 -
PHP 8.3 起可以在 __clone() 中重新初始化 readonly 属性。本文用对象复制场景说明作用域、深浅拷贝、间接修改和版本兼容边界。473 收藏 -
PHP Generator 的 yield from 可以把分页读取、过滤器、数组和 Iterator 组合成一条惰性迭代链。本文通过可运行示例说明委托控制权、重复键、iterator_to_array 参数以及 Generator return 值的处理边界。206 收藏 -
文章 · php教程 | 2天前 | 协程 · PHP · 异步编程 · Fiber::suspend Fiber::resume PHP Fiber Fiber::getReturn 协程值传递 Fiber 生命周期
PHP Fiber 的值传递要拆成三段:start 或 resume 取到 suspend 交出的值,resume 的参数回到 Fiber 内部的 suspend 调用,Fiber 结束后再用 getReturn 读取最终 return。本文用一个多轮暂停示例说明设计边界、状态检查和异常清理。366 收藏 -
文章 · php教程 | 2天前 | 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 收藏 -
文章 · php教程 | 2天前 | php教程 · PHP stream_socket_client 超时 PHP DNS 解析失败 PHP TCP 连接拒绝 stream_socket_client errno PHP 网络连接排查
PHP stream_socket_client 日志只写超时很难定位根因。本文用独立 DNS 检查加 TCP 连接回执的方式,区分解析失败、连接拒绝、连接超时和 connect 前失败,并给出可复查的 PHP 代码。395 收藏 -
PHP curl_multi_select 返回 0 只表示等待窗口没有描述符活动,不代表请求失败。本文用轮询骨架拆开 curl_multi_exec、still_running、curl_multi_info_read 与 0、-1 的处理边界。132 收藏 -
PHP readonly 锁住的是属性重新绑定,不会自动冻结对象内部状态。本文用最小示例拆开重新赋值、内部修改、克隆和版本差异,帮助你为只读对象选择正确的封装边界。175 收藏 -
Composer classmap 更新后仍找不到类,通常不是命令没执行,而是映射、命名空间、运行入口或部署目录仍有一处不一致。本文按故障现场拆解判断与修复步骤。162 收藏 -
PHP 开启 pcntl_async_signals 后,信号处理器可能在主流程中被调度。本文用 pending 状态和 busy 标记把回调变成轻量入口,避免刷新任务重入。402 收藏 -
讲清 PHP SplFileObject 读取文件时末尾换行、空行与 EOF 占位的区别,并给出跳过或保留空行的标志组合与判断方法。418 收藏 -
PHP array_is_list([]) 会返回 true,因为空数组没有违反从 0 开始且连续排列的键规则。本文对照空洞、乱序和字符串键,并给出 PHP 8.1 以前的兼容判断写法。229 收藏 -
说明 PHP mb_strtolower 处理土耳其语时为何不能依赖 locale,区分 mb_language 的职责,给出 I、İ、i、ı 的专用映射与码点验证方法。384 收藏 -
PHP DatePeriod 默认排除结束日期。本文区分 PHP 8.2 起的 INCLUDE_END_DATE、结束日期不对齐时的手动补齐,以及旧版本兼容和重复日期检查。434 收藏 -
PHP PDO fetchObject 的第二个参数就是构造参数数组。本文从参数位置、构造顺序、FETCH_PROPS_LATE 和最小验证四个方面排查常见问题。496 收藏