定制 simsoft/validator 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

simsoft/validator

Composer 安装命令:

composer require simsoft/validator

包简介

A Laravel-inspired validation wrapper for Symfony Validator with custom rules, error handling, and validated input support.

README 文档

README

License: MIT PHP Docs

A Laravel-inspired validation wrapper for Symfony Validator. Simple API, full power of Symfony constraints.

📖 Full Documentation

Requirements

  • PHP >= 8.4
  • Symfony Validator ^8

Installation

composer require simsoft/validator

Basic Usage

use Simsoft\Validator;
use Simsoft\Validator\Rule;
use Symfony\Component\Validator\Constraints\Email;
use Symfony\Component\Validator\Constraints\Length;
use Symfony\Component\Validator\Constraints\NotBlank;

$validator = Validator::make($_POST, [
    // bail: stops at first failure — only one error reported
    'email' => Rule::bail([
        new NotBlank(message: 'Email is required'),
        new Email(message: 'Invalid email'),
    ]),
    // array: runs all constraints — collects all errors
    'password' => [
        new NotBlank(message: 'Password is required'),
        new Length(
            min: 8,
            max: 20,
            minMessage: 'Minimum {{ limit }} characters are required',
            maxMessage: 'Maximum {{ limit }} characters exceeded',
        ),
    ],
]);

if ($validator->passes()) {
    $data = $validator->validated();
} else {
    echo $validator->errors()->first('email');
}

Rule::bail() vs array rules:

  • Rule::bail([...]) — stops at the first failing constraint (short-circuit)
  • [...] (plain array) — runs all constraints and collects all violations

Retrieving Validated Data

$validated = $validator->validated();              // all validated data
$email = $validator->validated('email');           // single attribute value

$data = $validator->safe()->only(['email']);       // subset of validated data
$data = $validator->safe()->except(['remember_me']); // exclude specific keys

foreach ($validator->safe() as $key => $value) {
    // iterate validated attributes
}

Handling Errors

if ($validator->fails()) {
    echo $validator->errors()->first('email');     // first error for attribute
    $errors = $validator->errors()->all();         // all errors as an array
    $count = count($validator->errors());          // number of failed attributes

    if ($validator->errors()->has('email')) {
        // attribute has errors
    }

    foreach ($validator->errors()->get('email') as $message) {
        echo $message;                            // iterate attribute errors
    }

    foreach ($validator->errors() as $attribute => $messages) {
        // iterate all errors
    }
}

Custom Validator Class

namespace App\Validators;

use Simsoft\Validator;
use Simsoft\Validator\Rule;
use Symfony\Component\Validator\Constraints\Email;
use Symfony\Component\Validator\Constraints\NotBlank;

class LoginValidator extends Validator
{
    protected array $attributes = ['email', 'password', 'remember_me' => false];

    protected function rules(): array
    {
        return [
            'email' => Rule::bail([
                new NotBlank(message: 'Email is required'),
                new Email(message: 'Invalid email'),
            ]),
            'password' => new NotBlank(message: 'Password is required'),
        ];
    }
}
$validator = LoginValidator::make($_POST);

if ($validator->passes()) {
    $data = $validator->validated();
}

Documentation

📖 Read the Full Documentation

Available Constraints

All Symfony validation constraints are supported. See Symfony Validation Constraints.

License

MIT License. See LICENSE for details.

simsoft/validator 适用场景与选型建议

simsoft/validator 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 430 次下载、GitHub Stars 达 0, 最近一次更新时间为 2022 年 12 月 13 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「symfony」 「php」 「validator」 「validation」 「rules」 「laravel」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 simsoft/validator 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 simsoft/validator 我们能提供哪些服务?
定制开发 / 二次开发

基于 simsoft/validator 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 430
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 9
  • 依赖项目数: 2
  • 推荐数: 1

GitHub 信息

  • Stars: 0
  • Watchers: 2
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2022-12-13