PhpBoot 参数校验指南用 v 规则打造健壮接口的 20 个常用校验规则【免费下载链接】phpboot:coffee: tiny fast PHP framework for building Microservices/RESTful APIs, with useful features: IOC, Hook, ORM, RPC, Swagger, Annotation, Parameters binding, Validation, etc.项目地址: https://gitcode.com/gh_mirrors/ph/phpboot当你在用 PhpBoot 构建 RESTful API 或微服务时参数校验是保障接口健壮性的第一道防线。PhpBoot 参数校验通过v注解实现只需一行注释就能完成必填、类型、数值范围、格式等校验失败时框架自动返回 400 错误完全不需要手写 if-else 判断。本文整理了 PhpBoot 参数校验中最常用的 20 个 v 校验规则从必填到日期一次讲透帮你用最少的代码写出最可靠的接口。先看懂 v 语法一行注释搞定参数校验v通常嵌套在方法的param注解中使用语法非常简单v 规则[:参数1[,参数2...]][|规则2...]多个规则之间用|分隔规则和参数之间用:分隔多个参数之间用,分隔来看官方示例中最经典的写法详见docs/quick-start/example.md/** * route GET /books/ * param int $offset 结果集偏移 {v min:0} * param int $limit 返回结果最大条数 {v max:1000} */ public function findBooks($offset0, $limit100)只要请求参数不满足规则PhpBoot 就会自动返回 400 Bad Request方法内部无需写任何校验代码。更贴心的是这些v规则会同步展示在自动生成的 Swagger 文档中前端同学一眼就能看懂参数约束规则 1-2必填与可选required、optionalrequired参数必须传缺失直接校验失败optional参数可传可不传但传了就必须通过后续规则param string $name {v required} param string $nickname {v optional|lengthMax:20}规则 3-4数值范围min、maxmin:0最小值max:100最大值param int $age {v min:1|max:150} param float $price {v min:0.01}规则 5-7字符串长度lengthMin、lengthMax、lengthBetweenlengthMin:6长度至少 6lengthMax:200长度最多 200实体属性v lengthMax:200的用法见docs/basic/params-bind.mdlengthBetween:6,20长度在 6 到 20 之间param string $password {v lengthMin:6|lengthMax:20} param string $brief {v lengthBetween:10,200}规则 8-9枚举白名单与黑名单in、notInin:1,2,3必须是列表中的值notIn:0,99不能是列表中的值param int $status {v in:1,2,3} param int $role {v notIn:0,99}规则 10-12常用格式email、url、ipemail合法的邮箱地址url合法的 URLip合法的 IP 地址param string $email {v email} param string $home {v url} param string $addr {v ip}规则 13-15类型校验integer、numeric、booleaninteger必须是整数numeric必须是数值含小数boolean必须是布尔值param int $count {v integer} param float $amount {v numeric} param bool $enabled {v boolean}规则 16-18正则与日期regex、date、dateFormatregex:/^[a-z]$/匹配指定正则date合法的日期dateFormat:Y-m-d符合指定格式的日期param string $code {v regex:/^[A-Z]{2}\d{4}$/} param string $day {v dateFormat:Y-m-d}规则 19-20字段对比与协议确认equals、acceptedequals:confirm与另一字段相等常用于密码确认accepted必须为 yes、on、1、true 之一常用于勾选协议param string $password {v required|lengthMin:6} param string $confirmPassword {v equals:password} param bool $agreement {v accepted}在实体属性中也能用 vv不只用于方法参数实体Entity的属性同样支持校验规则直接写在属性注释上class Book { /** * var int * v optional */ public $id; /** * 简介 * var string * v lengthMax:200 */ public $brief ; }当实体作为接口参数传入时如param Book $book {bind request.request}框架会自动完成属性级校验嵌套实体同样适用。校验失败时会发生什么校验不通过时PhpBoot 会自动抛出 400 Bad Request前端收到形如{type:...,message:...}的 JSON 错误响应。这意味着你可以在 Controller 里专注于业务逻辑把防御性校验全部交给v。校验器的实现与测试可参考src/Validator/Validator.php、src/Controller/Annotations/ValidateAnnotationHandler.php和tests/ValidateTest.php。20 个 v 规则速查表序号规则说明示例1required必填{v required}2optional可选{v optional}3min最小值{v min:0}4max最大值{v max:1000}5lengthMin最短长度{v lengthMin:6}6lengthMax最长长度{v lengthMax:200}7lengthBetween长度区间{v lengthBetween:6,20}8in值在列表中{v in:1,2,3}9notIn值不在列表中{v notIn:0}10email邮箱格式{v email}11urlURL 格式{v url}12ipIP 地址{v ip}13integer整数{v integer}14numeric数值{v numeric}15boolean布尔值{v boolean}16regex正则匹配{v regex:/^\d$/}17date有效日期{v date}18dateFormat指定日期格式{v dateFormat:Y-m-d}19equals与另一字段相等{v equals:password}20accepted勾选确认{v accepted}更多进阶玩法除了以上 20 个高频规则v还支持alpha、alphaNum、slug、contains、different、creditCard、array、dateBefore、dateAfter、urlActive、instanceOf等规则完整列表见官方文档docs/basic/validation.md。命令行Console命令的参数同样支持v校验逻辑与接口完全一致见src/Console/Annotations/ValidateAnnotationHandler.php。如果想亲自体验这些校验规则可以 clone 仓库 https://gitcode.com/gh_mirrors/ph/phpboot 运行示例项目或在本地跑一遍tests/ValidateTest.php中的测试用例。掌握这 20 个 v 规则你的 PhpBoot 接口就已经具备了生产级的参数防御能力。【免费下载链接】phpboot:coffee: tiny fast PHP framework for building Microservices/RESTful APIs, with useful features: IOC, Hook, ORM, RPC, Swagger, Annotation, Parameters binding, Validation, etc.项目地址: https://gitcode.com/gh_mirrors/ph/phpboot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考