php教程技术文章
-
PHP 校验回调签名或一次性令牌时,逐字符比较可能暴露时序差异。本文从 webhook 验签场景出发,说明 hash_equals 的参数顺序、长度边界、类型校验、原始字符串编码和失败审计,给出可直接落地的验收清单。322 收藏 -
PHP array_filter 会保留原数组键名,过滤后直接 json_encode 可能得到 JSON 对象。本文用订单字段清洗示例说明默认过滤、回调签名、键名重排和嵌套数组边界。102 收藏 -
PHP match 没有命中任何分支时会抛出 UnhandledMatchError。本文用状态映射示例说明何时保留异常、何时增加 default,并给出输入校验与测试边界。107 收藏 -
文章 · php教程 | 1星期前 | 日志 · CLI · 异常处理 · PHP · 进程验收 · Throwable 退出码 register_shutdown_function 命令行脚本 PHP CLI
PHP CLI 脚本明明抛出了异常,shell 或 CI 却拿到 0,通常不是 PHP 没有报错,而是异常、致命错误和 shutdown 回调被混在了一条观测链里。本文从命令行任务现场出发,拆开 Throwable、register_shutdown_function 与退出码的关系,并给出可复现的日志验收方法。133 收藏 -
PHP 的 [] 和 list() 解构能让数组取值更短,但缺失键会得到 null 并触发告警,数字索引与关联键也不能混用理解。本文用订单输入示例拆开映射、默认值、校验和 foreach 的边界。427 收藏 -
PHP 8.4 的日期解析失败不应再靠返回值猜测。本文用用户输入日期的实际场景,说明 DateMalformedStringException 的捕获边界、格式校验、日志记录和旧版本兼容写法。367 收藏 -
PHP 8.4 属性钩子可以把输入归一化放进属性声明附近,但它不会替代完整的业务校验。本文通过金额和状态字段,说明 set 钩子的触发边界、类型约束、异常处理与旧版本回退方式。347 收藏 -
PHP Fiber 让任务可以暂停和恢复,但中断并不等于资源自动收尾。本文用一个可复现的文件读取场景,拆开 finally、取消标记和 Fiber 状态检查,给出不会遗留句柄的协程清理方案。212 收藏 -
文章 · php教程 | 2星期前 | PHP · 私有仓库 · composer · CI/CD · 凭据安全 · Composer 私有仓库 auth.json COMPOSER_AUTH CI密钥
Composer 私有仓库认证应避开仓库内明文密钥。本文拆解 auth.json、COMPOSER_AUTH 环境变量、CI 注入和凭据轮换的边界,给出可验收的配置方式。345 收藏 -
将自然日输入从时间点语义中分离,显式设置时区、严格解析日期并接收不可变对象返回值,避免换环境导致订单日期偏移。227 收藏 -
文章 · php教程 | 2星期前 | HTTP · 文件上传 · PHP · PHP 8.4 · multipart/form-data PHP 8.4 request_parse_body PUT文件上传
PHP 8.4 的 request_parse_body() 让 PUT、PATCH 等非 POST 请求也能解析表单和文件。用一个可运行的小接口说明请求体只能读取一次、上传大小覆盖和失败验收。155 收藏 -
文章 · php教程 | 2星期前 | HTTP · 文件上传 · PHP · PHP 8.4 · multipart/form-data PHP 8.4 request_parse_body PUT文件上传
PHP 8.4 的 request_parse_body() 让 PUT、PATCH 等非 POST 请求也能解析表单和文件。用一个可运行的小接口说明请求体只能读取一次、上传大小覆盖和失败验收。106 收藏 -
文章 · php教程 | 2星期前 | HTTP · 文件上传 · PHP · PHP 8.4 · multipart/form-data PHP 8.4 request_parse_body PUT文件上传
PHP 8.4 的 request_parse_body() 让 PUT、PATCH 等非 POST 请求也能解析表单和文件。用一个可运行的小接口说明请求体只能读取一次、上传大小覆盖和失败验收。203 收藏 -
SplFixedArray 适合元素数量明确、需要固定索引边界的 PHP 场景。本文对比普通数组,说明容量、越界、遍历和 JSON 转换的实际边界,避免把它误当成通用性能开关。344 收藏 -
PHP curl_multi 适合把多个 HTTP 请求放进同一批次,但并发数、超时、句柄回收和失败重试必须一起设计。本文用一个可控批处理示例讲清请求收敛和验收边界。174 收藏