php教程技术文章
-
文章 · php教程 | 3星期前 | JSON · 数据校验 · 异常处理 · PHP · 接口开发 · php json_decode JSON_THROW_ON_ERROR JSON_ERROR_DEPTH JSON_ERROR_SYNTAX
PHP json_decode 返回 null 时,先区分合法 JSON 的 null、语法错误、深度超限和编码问题,再用 JSON_THROW_ON_ERROR 与 json_last_error_msg() 留下可定位的异常证据。484 收藏 -
从 PHP-FPM 进程池耗尽的真实信号出发,解释 pm.max_children、慢日志和入口限流如何配合,给出可灰度、可回滚的排查与改造步骤。430 收藏 -
PHP 8.5 扩展了 #[\Deprecated] 的使用范围。本文用用户级方法、类常量和 trait 做一套可复查的弃用工作流,说明告警触发、Reflection 验收与旧版本兼容边界。446 收藏 -
PHP 校验回调签名或一次性令牌时,逐字符比较可能暴露时序差异。本文从 webhook 验签场景出发,说明 hash_equals 的参数顺序、长度边界、类型校验、原始字符串编码和失败审计,给出可直接落地的验收清单。322 收藏 -
PHP array_filter 会保留原数组键名,过滤后直接 json_encode 可能得到 JSON 对象。本文用订单字段清洗示例说明默认过滤、回调签名、键名重排和嵌套数组边界。102 收藏 -
PHP match 没有命中任何分支时会抛出 UnhandledMatchError。本文用状态映射示例说明何时保留异常、何时增加 default,并给出输入校验与测试边界。107 收藏 -
文章 · php教程 | 3星期前 | 日志 · 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教程 | 3星期前 | PHP · 私有仓库 · composer · CI/CD · 凭据安全 · Composer 私有仓库 auth.json COMPOSER_AUTH CI密钥
Composer 私有仓库认证应避开仓库内明文密钥。本文拆解 auth.json、COMPOSER_AUTH 环境变量、CI 注入和凭据轮换的边界,给出可验收的配置方式。345 收藏 -
将自然日输入从时间点语义中分离,显式设置时区、严格解析日期并接收不可变对象返回值,避免换环境导致订单日期偏移。227 收藏 -
文章 · php教程 | 3星期前 | 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教程 | 3星期前 | 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 收藏