krzysztofrewak/laravel-oop-validator
Composer 安装命令:
composer require krzysztofrewak/laravel-oop-validator
包简介
Laravel Validator object-oriented wrapper
README 文档
README
laravel-oop-validator
Package was created for Laravel developers who need for some reason object-oriented approach to validation. It basically maps all string rules into easy manageable chained methods.
Installation
Use composer:
composer require krzysztofrewak/laravel-oop-validator
Usage
Most of the Laravel validation rules were mapped into Field methods. You can use ValidationBuilder or PipelinedValidationBuilder instances: first one will return rules in arrayed form, second one in string pipeline.
Simple rule chains
$validator->validate("email", function (Field $field): void { $field->string()->required()->email(["rfc"]) }); $validator->getRules();
// for ValidationBuilder: ["email" => ["string", "required", "email:rfc"]] // for PipelinedValidationBuilder: ["email" => "string|required|email:rfc"]
More complex rule chains
$validator->validate("avatar", function (Field $field): void { $field->required() ->mimes(["jpeg", "png"]) ->unique("users", "avatar") ->dimensions(function(Dimensions $dimensions): void { $dimensions->ratio(3/2); }); }); $validator->getRules();
// for ValidationBuilder: ["avatar" => ["required", "mimes:jpeg,png", "unique:users,avatar", "dimensions:ratio=1.5"]] // for PipelinedValidationBuilder: ["avatar" => "required|mimes:jpeg,png|unique:users,avatar|dimensions:ratio=1.5"]
Nested rules chains
Nested validation rules could look like this:
$validator = new ValidationBuilder(); $validator->validateEach("tags", function (Field $field): void { $field->array(); }); $validator->validateInEach("id", "tags", function (Field $field): void { $field->required()->exists("tags", "id"); });
// for ValidationBuilder: ["tags.*:" => ["array"], "tags.*.id:" => ["required", "exists:tags,id"]] // for PipelinedValidationBuilder: ["tags.*:" => "array", "tags.*.id:" => "required|exists:tags,id"]
Custom rules chains
Custom validation rules could look like this:
$validator = new ValidationBuilder(); $validator->validate("field", function (Field $field): void { $field->required()->customRule(CustomRule::class); });
// for ValidationBuilder: ["field" => ["required", CustomRule::class]] // for PipelinedValidationBuilder it will throw NotAllowedRuleException()
Laravel integration
You can add instance of ValidationBuilder into your FormRequest's rules() method or any other place where you can put array of rules:
<?php declare(strict_types = 1); namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; use KrzysztofRewak\LaravelOOPValidator\Field; use KrzysztofRewak\LaravelOOPValidator\ValidationBuilder; /** * Class CreateNewUserRequest * @package App\Http\Requests */ class CreateNewUserRequest extends FormRequest { /** * @var ValidationBuilder */ protected $builder; /** * CreateNewUserRequest constructor. * @param ValidationBuilder $builder */ public function __construct(ValidationBuilder $builder) { $this->builder = $builder; } /** * @return bool */ public function authorize(): bool { return true; } /** * @return array */ public function rules(): array { $this->builder->validate("email", function (Field $field): void { $field->required()->string()->email()->unique("users", "email"); }); $this->builder->validate("password", function (Field $field): void { $field->required()->string()->min(6)->confirmed(); }); return $this->builder->getRules(); } }
krzysztofrewak/laravel-oop-validator 适用场景与选型建议
krzysztofrewak/laravel-oop-validator 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 5.93k 次下载、GitHub Stars 达 80, 最近一次更新时间为 2019 年 10 月 29 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「framework」 「validation」 「laravel」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 krzysztofrewak/laravel-oop-validator 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 krzysztofrewak/laravel-oop-validator 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 krzysztofrewak/laravel-oop-validator 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
PHP Framework HLEB2 is the foundation of the web application. Provides ease of development and application performance.
Adds request-parameter validation to the SLIM 3.x PHP framework
A jQuery augmented PHP library for creating and validating HTML forms
A Laravel validator for delimiter-separated list of emails.
A CakePHP behavior to validate foreign keys
PHP Validator for stuff.
统计信息
- 总下载量: 5.93k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 81
- 点击次数: 14
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2019-10-29