digitalrevolution / symfony-console-validation
Symfony 命令输入参数和选项验证
v1.1.0
2023-12-08 15:12 UTC
Requires
- php: >=8.1
- digitalrevolution/symfony-validation-shorthand: ^1.0.4
- symfony/console: ^6.2 || ^7.0
- symfony/validator: ^6.2 || ^7.0
Requires (Dev)
- digitalrevolution/phpunit-file-coverage-inspection: ^v2.0.0
- phpmd/phpmd: ^2.14
- phpstan/extension-installer: ^1.3
- phpstan/phpstan: ^1.10
- phpstan/phpstan-phpunit: ^1.3
- phpstan/phpstan-strict-rules: ^1.5
- phpunit/phpunit: ^9.6
- roave/security-advisories: dev-latest
- squizlabs/php_codesniffer: ^3.6
This package is auto-updated.
Last update: 2024-08-31 00:35:54 UTC
README
Symfony Console Validation
Symfony Console 输入验证组件。简化输入参数和选项的验证。
安装
通过以下方式将库作为依赖项包含到您的项目中:
composer require digitalrevolution/symfony-console-validation
使用方法
- 创建一个扩展
AbstractValidatedInput
类的ExampleInput
类。 - 配置您自己的
ValidationRules
。有关规则的信息,请参阅验证简写库。 - 确保将
InputValidator
类注册为 您的 Symfony 项目中的服务。
use DigitalRevolution\SymfonyConsoleValidation\AbstractValidatedInput; use DigitalRevolution\SymfonyConsoleValidation\ValidationRules; class ExampleInput extends AbstractValidatedInput { public static function getValidationRules(): ValidationRules { return new ValidationRules([ 'arguments' => [ 'email' => 'required|string|email' ], 'options' => [ 'projectId' => 'int:min:1' ] ]); } public function getEmail(): string { return $this->input->getArgument('email'); } public function getProjectId(): ?int { $value = $this->input->getOption('projectId'); return $value === null ? null : (int)$value; } }
剩下的就是在您的 Command
中使用您的 ExampleInput
类来验证输入。
class ExampleCommand extends Command { public function __construct(private InputValidator $inputValidator, ?string $name = null) { parent::__construct($name); } protected function execute(InputInterface $input, OutputInterface $output): int { // third argument will throw exception if input is invalid. Set to `false` if you want to handle the validation yourself. $validatedInput = $this->inputValidator->validate($input, ExampleInput::class, true); ... } }
手动处理无效输入
默认情况下,validate
方法将抛出 ViolationException
。要自己处理违规情况
class ExampleCommand extends Command { ... protected function execute(InputInterface $input, OutputInterface $output): int { $validatedInput = $this->inputValidator->validate($input, ExampleInput::class, false); if ($validatedInput->isValid() === false) { $violations = $validatedInput->getViolations(); ... } ... } }
关于我们
在123inkt(Digital Revolution B.V.的一部分),每天都有超过50名开发专业人员致力于改进我们的内部ERP和我们的几家商店。你想加入我们吗?我们在寻找开发者。