laminas/laminas-validator
Validation component for PHP and Laminas applications. Provides a wide range of ready-to-use validators (strings, numbers, dates, files, and more), consistent error messages, and an extensible API to create custom validators and input filtering rules.
Strengths:
ValidatorInterface or AbstractValidator), enabling domain-specific rules (e.g., business logic validations like "order total must exceed $100 for free shipping").Validator::make()) and Form Requests, reducing duplication.Weaknesses:
Validator facade).Rule objects).AbstractValidator and message template system, which differs from Laravel’s Rule objects.Validator facade already supports third-party validators, and Laminas Validator can be injected into Laravel’s validation pipeline via:
Illuminate\Validation\Rule to wrap Laminas validators.Validator::extend() to register Laminas validators globally.FormRequest::rules() via custom methods.// Register a Laminas validator globally
Validator::extend('laminas_digits', function ($attribute, $value, $parameters, $validator) {
$laminasValidator = new \Laminas\Validator\Digits();
return $laminasValidator->isValid($value);
});
// Use in FormRequest
public function rules()
{
return [
'phone' => ['required', 'laminas_digits'],
];
}
Rule objects vs. Laminas’ ValidatorInterface).Rule objects)?spatie/laravel-validation-extensions) that offers similar functionality with tighter integration?FormRequest::rules()).Validator::make()).laminas/laminas-validator and laminas/laminas-i18n-resources.Validator::extend().Validator facade may need adapters for older Laravel versions.Laminas\Validator; Laravel uses Illuminate\Support\Facades\Validator. No direct conflict.ValidatorServiceProvider).LaminasOrderValidator).composer.json.ValidatorChain (vs. Laravel’s Validator).getMessages() to inspect failures.How can I help you explore Laravel packages today?