php教程技术文章
-
PHP 终端表格不要用 strlen() 猜列宽。本文用 mb_strwidth() 解释半角、全角和 UTF-8 编码边界,并给出按显示宽度截断与对齐的实用写法。241 收藏 -
PHP 文件上传失败时,upload_max_filesize 限制单个文件,post_max_size 限制整个 POST 请求。本文用现象、配置和 PHP 读取值的方法区分两者,说明为什么 post_max_size 必须更大,以及如何处理超限后 $_FILES 为空。211 收藏 -
PHP fgetcsv 返回的是按位置排列的字段数组,连续分隔符产生的空字段仍然占位,而行尾缺失字段会让数组长度变短。本文用字段数量、空值和空行三个判断层次,说明如何在 CSV 导入边界保留行号并区分数据为空与结构不完整。261 收藏 -
PHP PDO 的 ATTR_STRINGIFY_FETCHES 可以控制查询结果是否把非 null 值按字符串读取。本文结合接口输出、旧代码兼容和类型检查,说明开启与关闭该属性时的边界。270 收藏 -
PDO 模拟预处理会影响重复占位符和错误暴露时机。本文结合 PDO_MYSQL 说明原生优先的边界、显式参数类型与可迁移写法,帮助判断是否关闭模拟。308 收藏 -
PHP Fiber::throw() 的关键不是从外部直接改写协程代码,而是在 Fiber 已挂起时,把 Throwable 重新交给当前 Fiber::suspend() 调用点。本文用一个可取消的协程调度场景说明挂起门槛、异常捕获、FiberError 和终止状态之间的关系。166 收藏 -
PHP WeakMap 用对象作为弱键保存附加数据,对象不再被其他代码引用后,关联条目也可以自然消失。本文通过请求元数据缓存说明对象身份、引用关系、清理边界、常见误区和选型场景。482 收藏 -
PHP enum 新增项可能让旧 match 遗漏分支。本文区分合法枚举项与外部非法值,用集中展示映射、明确业务拒绝和完整代码说明 default 的边界与取舍。383 收藏 -
PHP 需要根据运行时类名和参数数组创建对象时,可以用 ReflectionClass::newInstanceArgs。本文从最小示例开始,说明参数传递、白名单工厂、异常边界和验收方式。399 收藏 -
文章 · php教程 | 1星期前 | JSON · 枚举 · php教程 · 语言特性 · php enum json_encode JsonSerializable backed enum JSON API
PHP backed enum 用 json_encode 时默认输出它的 string 或 int backed value;pure enum 不能直接编码为 JSON。本文说明默认序列化、JsonSerializable 覆盖、数组与 DTO 组合、错误处理和接口兼容演进。177 收藏 -
Laravel 配置缓存后修改 .env 不生效,通常与配置快照或长驻进程有关。本文用最小示例说明 env 与 config 的读取范围,以及开发、部署、队列和 Octane 的更新边界。134 收藏 -
文章 · php教程 | 1星期前 | 异常处理 · PHP · HTTP客户端 · php Symfony HTTP客户端 连接超时 httpclient 响应超时 max_connect_duration max_duration
PHP Symfony HttpClient 的 timeout、max_connect_duration 和 max_duration 解决的是不同等待问题。本文用最小示例说明如何分别限制建连、响应空闲和完整请求时长,并处理懒加载响应中的传输异常。148 收藏 -
PHPUnit 数据提供器不会自动复制参数里的可变对象。本文从共享引用、独立 fixture、浅克隆、嵌套对象、静态缓存和命名数据集几个边界出发,说明怎样让每个数据集拥有自己的测试状态。313 收藏 -
PSR-7 请求体是带游标的 StreamInterface,getContents() 读取后可能到达末尾。本文区分 getContents、__toString、rewind 和 seek(0),说明如何判断可回退能力,并在不可回退时用新流和 withBody() 让签名校验、日志与业务解析共享请求内容。123 收藏 -
PHP Composer 报依赖冲突时,不要先盲目降级。本文从 composer.json 的直接约束、传递依赖、composer.lock 锁定版本和 PHP 平台要求入手,用 prohibits/why-not 找到阻塞链,再用最小范围更新恢复可复现安装。304 收藏