jardissupport/validation
Composer 安装命令:
composer require jardissupport/validation
包简介
Object graph validation with recursive traversal, 21 built-in validators, and fluent field rule composition
README 文档
README
Part of Jardis — the Domain-Driven Design platform for PHP. You model your domain; Jardis generates the production-ready hexagonal code (DTOs, Command/Query handlers, repositories, persistence). This package is part of the open-source foundation that generated code runs on.
Object graph validation for PHP with recursive traversal. Walks entire object hierarchies — including nested aggregates and collections — applying field-level rules with 21 built-in validators. Purpose-built for aggregate validation in domain models. Fluent composition, circular reference detection, and break-on-first-error mode.
Features
- Recursive Object Traversal — validates nested objects and collections automatically, no manual wiring
- 21 Built-in Validators — NotBlank, Email, Url, Uuid, Range, Length, Format, DateTime, Ip, Iban, CreditCard, PhoneNumber, Json, Alphanumeric, Contain, Count, Positive, Equals, UniqueItems, NotEmpty, Callback
- Fluent Field Rules —
CompositeFieldValidatorcomposes per-field validators with a chainablefield()API - Break Mode — stop at first error for guard-style validation before deeper checks
- ValidatorRegistry — maps classes (and parent types) to their validators with exact and inheritance-based matching
- Circular Reference Detection — tracks visited objects to prevent infinite loops in cyclic graphs
- Exclude Fields — skip fields conditionally, supporting partial-update patterns
- Depth Limiting —
ValidationContexttracks traversal levels to cap recursion depth
Installation
composer require jardissupport/validation
Quick Start
use JardisSupport\Validation\CompositeFieldValidator; use JardisSupport\Validation\ValidatorRegistry; use JardisSupport\Validation\ObjectValidator; use JardisSupport\Validation\Validator\NotBlank; use JardisSupport\Validation\Validator\Email; use JardisSupport\Validation\Validator\Length; // Define rules for a single class $userValidator = new CompositeFieldValidator(); $userValidator->field('name')->validates(NotBlank::class)->validates(Length::class, ['min' => 2, 'max' => 100]); $userValidator->field('email')->validates(NotBlank::class)->validates(Email::class); // Register and validate $registry = new ValidatorRegistry(); $registry->register(User::class, $userValidator); $validator = new ObjectValidator($registry); $result = $validator->validate($user); if (!$result->isValid()) { print_r($result->getErrors()); }
Advanced Usage
use JardisSupport\Validation\CompositeFieldValidator; use JardisSupport\Validation\ValidatorRegistry; use JardisSupport\Validation\ObjectValidator; use JardisSupport\Validation\Validator\NotBlank; use JardisSupport\Validation\Validator\Uuid; use JardisSupport\Validation\Validator\Email; use JardisSupport\Validation\Validator\Range; // Break-mode: abort all validation if the id field is blank $orderValidator = new CompositeFieldValidator(); $orderValidator->field('id')->breaksOn(Uuid::class); $orderValidator->field('email')->validates(Email::class); $orderValidator->field('amount')->validates(Range::class, ['min' => 0.01]); // Partial updates: skip these fields unless id is present $orderValidator->excludeFields(['createdAt', 'updatedAt']); // ValidatorRegistry resolves by exact class or parent/interface match $registry = new ValidatorRegistry(); $registry->register(Order::class, $orderValidator); $registry->register(OrderLine::class, $lineValidator); // ObjectValidator walks the entire graph — Order + nested OrderLine collection $validator = new ObjectValidator($registry); $result = $validator->validate($order); // Errors keyed by short class name: ['order' => [...], 'orderLine' => [...]]
Documentation
Full documentation, guides, and API reference:
docs.jardis.io/en/support/validation
License
This package is licensed under the MIT License.
Jardis · Documentation · Headgent
AI-Assisted Development
This package ships with a skill for Claude Code, Cursor, Continue, and Aider. Install it in your consuming project:
composer require --dev jardis/dev-skills
More details: https://docs.jardis.io/en/skills
jardissupport/validation 适用场景与选型建议
jardissupport/validation 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 43 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 03 月 14 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「php」 「validator」 「validation」 「domain-driven-design」 「jardis」 「Headgent」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 jardissupport/validation 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 jardissupport/validation 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 jardissupport/validation 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Runn Me! Validation and Sanitization Library
Extension for Opis JSON Schema
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
统计信息
- 总下载量: 43
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 37
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-03-14