php教程技术文章
-
PHP 中统一处理中文字符串时,mb_internal_encoding 负责提供 mbstring 默认编码,mb_substr 的 encoding 参数只覆盖当前截取调用。本文用 UTF-8、混合输入和 PHP 8 异常边界说明两者怎么选择。177 收藏 -
PHP readonly 属性报错时,先看属性是否已初始化,再根据赋值作用域区分初始化失败、重复修改和间接修改。223 收藏 -
文章 · php教程 | 2星期前 | 反射 · php教程 · ReflectionParameter getAttributes PHP attributes Attribute::IS_REPEATABLE 重复属性
PHP 重复 Attribute 不能靠读取端猜测,必须先在属性类声明中加入 Attribute::IS_REPEATABLE,再用 ReflectionParameter::getAttributes() 取得全部实例,并根据 getArguments 或 newInstance 的需要选择读取方式。261 收藏 -
使用 PHP curl_multi 并发请求时,通过 curl_multi_info_read() 获取已完成的单个句柄,再结合 CURLOPT_PRIVATE、传输结果和 HTTP 状态准确归属与处理响应。223 收藏 -
PHP stream_set_timeout 不会直接抛出超时异常,读取后应紧接着用 stream_get_meta_data 检查 timed_out,再结合 feof 和读取返回值区分超时、EOF 与读取错误。199 收藏 -
PHP backed enum 处理请求参数时,from() 失败会抛出 ValueError,tryFrom() 失败返回 null。本文说明如何清洗外部值、映射稳定业务错误,并让领域服务只接收合法枚举。467 收藏 -
解释 PHP match 没有命中分支时抛出 UnhandledMatchError 的原因,并用 default、显式异常和输入归一化设计可靠的默认结果。100 收藏 -
PHP json_decode 返回 null 不一定是语法错误,深层 JSON 超过 depth 时会产生 JSON_ERROR_DEPTH。本文用异常、错误码和轻量结构扫描区分问题,并给出生产环境的深度上限与排查写法。488 收藏 -
DateTimeImmutable 的 modify() 不会改写原对象,而是返回新的日期对象。本文用 PHP 示例说明如何接住返回值、如何选择 DateTime 与 DateTimeImmutable,并提醒月末运算和异常处理边界。232 收藏 -
bindParam 绑定的是变量引用,真正取值发生在 execute 时。循环中反复改写或复用变量时,容易让多个参数都落到最后一次值;本文用批量写入示例说明原因,并给出 bindValue 与固定变量复用两种稳定写法。298 收藏 -
JSON_THROW_ON_ERROR 能让 PHP 解码失败直接抛出 JsonException,但异常并不会自动携带业务字段路径。本文用原始请求体、行列提示和字段级解码,建立一套可追踪的 JSON 错误记录方式。501 收藏 -
PHP 反射读取 readonly 属性并不等于可以随意处理属性:isReadOnly() 只看声明,isInitialized() 才能判断当前对象是否已有值。本文整理 PHP 8.1 之后的读取边界和迁移写法。194 收藏 -
PHP 8.6 的 Autoconf 2.71 与 C11 构建要求,主要影响从 Git 源码生成 configure 的脚本;发布压缩包和数据库运行时依赖应分别处理。380 收藏 -
PHP 8.4 的 lazy proxy 不应通过读取属性来判断是否已加载,因为读取本身可能触发 factory。本文用 ReflectionClass::isUninitializedLazyObject() 做无副作用检查,再说明 initializeLazyObject() 的显式初始化和 proxy、真实实例的身份边界。468 收藏 -
用 PHP curl_multi_exec 批量发送 HTTP 请求,正确轮询 curl_multi_info_read、等待 curl_multi_select、读取 curl_multi_getcontent,并区分多句柄错误、单请求错误和 HTTP 状态。260 收藏