php教程技术文章
-
用 set_error_handler 把 PHP 可捕获错误转换为 ErrorException,保留错误级别、文件和行号,并划清不可捕获错误的处理边界。372 收藏 -
PHP CLI 通过 php://stdin 和 fgets() 逐行读取标准输入,本文说明如何区分空行与 EOF、选择 trim 或 rtrim,并覆盖管道、重定向和长行边界。193 收藏 -
PHP curl_multi_select 返回 0 表示本轮没有活动描述符,不是请求失败。通过短暂让出 CPU 后继续 curl_multi_exec,并读取完成消息,可以避免多请求循环忙等。191 收藏 -
讲清 PHP DateTime 的来源时区、目标时区与瞬时时刻,使用 setTimezone 和 DateTimeImmutable 完成不改变时间戳的时区转换,并给出偏移量、时间戳和夏令时回归检查清单。261 收藏 -
用 PHP Intl 的 NumberFormatter 按地区格式化货币和小数,说明 locale、保留位数、舍入模式与自定义 pattern 的使用边界。122 收藏 -
区分 PHP CLI 与 PHP-FPM 的 OPcache 配置和缓存上下文,给出配置、状态核对、代码变更刷新与部署边界的实用方法。304 收藏 -
PHP PDO 的模拟预处理与原生预处理,关键差异在参数模板由谁解析以及 prepare() 是否与数据库协商。本文说明 ATTR_EMULATE_PREPARES 的配置方式、唯一占位符写法、驱动兼容边界和排查清单。112 收藏 -
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教程 | 1星期前 | 协程 · PHP · 异步编程 · Fiber::suspend Fiber::resume PHP Fiber Fiber::getReturn 协程值传递 Fiber 生命周期
PHP Fiber 的值传递要拆成三段:start 或 resume 取到 suspend 交出的值,resume 的参数回到 Fiber 内部的 suspend 调用,Fiber 结束后再用 getReturn 读取最终 return。本文用一个多轮暂停示例说明设计边界、状态检查和异常清理。366 收藏 -
文章 · php教程 | 1星期前 | 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教程 | 1星期前 | 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 收藏