php教程技术文章
-
围绕 PHP Fiber::throw()、Fiber::suspend() 与 try/catch/finally,说明异常注入位置、清理执行顺序、FiberError 边界以及 finally 再抛错时的 previous 异常链。441 收藏 -
用 PHP stream_set_chunk_size 控制大文件流的分块策略,区分读缓冲与应用层读取,给出 stream_copy_to_stream 的参数、错误处理、回滚和资源回收清单。288 收藏 -
PHP DatePeriod 配合 P1M 从 29、30 或 31 号开始时,后续月份可能出现日期漂移。本文解释原因,并给出固定到每月 1 号、需要月末时再显式计算最后一天的写法。109 收藏 -
PHP array_is_list() 判断的是数组键是否从 0 连续递增,而 json_encode() 再根据数组结构输出 JSON 数组或对象。本文用最小示例拆开空数组、跳号键、关联键和 JSON_FORCE_OBJECT 的边界。244 收藏 -
区分 PHP preg_match 的未命中与执行失败,使用 preg_last_error_msg 和错误码保存即时诊断,按 UTF-8、回溯、递归及 JIT 错误选择处理方案。492 收藏 -
PHP 8.3 新增的 json_validate() 可以在不构建数组或对象结构时预检大 JSON 字符串,但输入字符串本身、嵌套深度和进程 memory_limit 仍然存在。本文按迁移场景说明该函数真正节省的内存、参数边界和不该连续调用 json_decode() 的路径。299 收藏 -
PHP typed property 尚未初始化时直接读取会抛出 Error。本文用 ReflectionProperty::isInitialized 在 getValue 前判断实例属性状态,区分未初始化、已初始化为 null、显式 unset、static 属性和私有属性的处理边界。372 收藏 -
PHP match 表达式没有匹配到任何分支时会抛出 UnhandledMatchError,而不是像 switch 一样自然落空。本文对比 default、显式捕获和输入校验三种处理方式,并说明严格比较与范围判断的兼容边界。113 收藏 -
PHP backed enum 适合把有限状态映射为可持久化的字符串或整数。本文从字段契约、写入、读取、未知值处理和迁移边界出发,整理一套可复用的 PDO 映射方案。452 收藏 -
PHP PharData::compressFiles 只适合 ZIP 归档的条目级批量压缩;TAR 应改用 compress() 做整体压缩。本文用最小 PHP 示例说明 GZ、BZ2、NONE、扩展依赖和异常边界。365 收藏 -
文章 · php教程 | 1星期前 | 反射 · 枚举 · php教程 · php backed enum ReflectionEnum::getBackingType 枚举反射 ReflectionNamedType
PHP ReflectionEnum::getBackingType 返回 backed enum 的 int 或 string 类型信息,纯枚举则返回 null。本文从反射判断、类型读取、元数据收敛和 PHP 8.2 返回类型边界四个方面说明稳定写法。166 收藏 -
PHP fputcsv 遇到带换行的字段时,关键是让函数负责 enclosure,并让读写双方显式使用相同的 separator、enclosure、escape 和 eol。本文给出临时流排查和多行字段往返处理边界。410 收藏 -
文章 · php教程 | 1星期前 | 错误处理 · php教程 · 日期时间 · php error Warning 日期解析 DateTimeImmutable DateTime::getLastErrors
PHP DateTime::getLastErrors 用来读取日期字符串解析过程中的 warning 和 error。本文结合 DateTimeImmutable::createFromFormat,说明如何区分 false、日期溢出和 PHP 8.2 起的 false 空结果,并按字符位置定位问题。455 收藏 -
PHP strpbrk 找不到字符时返回布尔 false,找到时返回从命中字符开始的字符串。本文说明为什么应使用 === false,并补充空字符集、大小写与 strcspn 的边界。386 收藏 -
PHP strpbrk 会返回从首个匹配字符开始的后缀;要取得匹配字符之后的字符串,应先判断 false,再用 substr 从偏移 1 截取。本文覆盖多分隔符、空参数、大小写和 PHP 8 的错误边界。164 收藏