php教程技术文章
-
PHP 8.4 的 mb_trim 可以按多字节字符安全地裁剪字符串两端。本文从全角空格未被 trim 删除的现象出发,讲清 characters 是逐字符集合而不是正则或范围表达式,并给出 UTF-8、自定义标记和兼容性处理示例。388 收藏 -
PHP readonly 属性不是普通的只读提示,而是一次初始化后禁止重新绑定的语言约束。本文解释合法初始化、作用域、间接修改、对象内部可变性和克隆边界。387 收藏 -
说明 PHP mb_strtolower 处理土耳其语时为何不能依赖 locale,区分 mb_language 的职责,给出 I、İ、i、ı 的专用映射与码点验证方法。384 收藏 -
文章 · php教程 | 2天前 | PHP · php-fpm · PHP OPcache opcache_reset validate_timestamps revalidate_freq opcache_invalidate
PHP 发布新代码后仍执行旧脚本,应先从实际承载请求的 PHP-FPM 读取有效配置,再检查 validate_timestamps、revalidate_freq、发布绝对路径、file_cache 与 preload。本文给出受保护诊断代码、刷新方式选择和多实例排查清单。382 收藏 -
PHP 枚举映射要保持穷尽,核心是显式列出每个 case、不要用静默 default,并遍历 cases() 做回归测试。本文比较 enum 方法、外部函数和数组映射,说明各自边界。377 收藏 -
PHP 7.4+ 可用 ReflectionReference::fromArrayElement() 判断数组元素是否为引用,再严格比较 getId() 判断两个元素是否共享同一引用。本文覆盖非引用、缺失键、foreach 残留引用与解除引用后的反向验证。376 收藏 -
用 set_error_handler 把 PHP 可捕获错误转换为 ErrorException,保留错误级别、文件和行号,并划清不可捕获错误的处理边界。372 收藏 -
PHP curl_multi_exec 负责推进多个 cURL 句柄的网络状态。本文用完整示例说明如何加入请求、等待 I/O、读取完成消息、区分传输错误与 HTTP 状态,并安全回收句柄。371 收藏 -
解释 PHP parse_url() 在 host/path、//host/path 和完整 URL 之间的解析差异,给出输入契约、scheme 归一化与严格 URI 解析的选择方法。369 收藏 -
PHP 8.5 中 array_first 和 array_last 遇到空数组都会返回 null。本文对比有效 null、旧版本兼容写法和 ?? 默认值的使用边界。367 收藏 -
文章 · php教程 | 3星期前 | 协程 · PHP · 异步编程 · Fiber::suspend Fiber::resume PHP Fiber Fiber::getReturn 协程值传递 Fiber 生命周期
PHP Fiber 的值传递要拆成三段:start 或 resume 取到 suspend 交出的值,resume 的参数回到 Fiber 内部的 suspend 调用,Fiber 结束后再用 getReturn 读取最终 return。本文用一个多轮暂停示例说明设计边界、状态检查和异常清理。366 收藏 -
本文用分页参数 page 演示 PHP filter_input 的四个参数配置,解释 FILTER_VALIDATE_INT、options、默认值,以及 null、false 和合法值的排查边界。363 收藏 -
PHP 8.5 用 clone($object, [...]) 在复制对象时更新指定属性,适合 readonly 值对象的 with 方法;本文同时说明作用域、类型校验和 PHP 8.4 兼容写法。362 收藏 -
PHP 8.4 放开了析构阶段的 Fiber 切换,但循环 GC 可能使用 gc_destructor_fiber。本文解释版本边界、暂停后的对象回收条件和幂等清理方案。362 收藏 -
PHP Attributes 适合给控制器声明路由和中间件元数据,但每次请求都反射扫描会放大开销。本文用纯数组描述、版本化缓存键和明确失效策略,整理一套可落地的缓存方法。357 收藏