twoh / validator
This project contains the basic Implementation of Validators in PHP DocBlocks.
1.0.8
2025-05-07 05:06 UTC
Requires
- php: ^8.3
- twoh/logger: ^1
Requires (Dev)
- phpunit/phpunit: ^11
- roave/security-advisories: dev-latest
README
About Validator
This project contains the basic Implementation of Validators in PHP DocBlocks.
Requirements
- PHP 8.3 or higher
- Composer
Installation
composer req twoh/validator
Usage
Custom Validator Example
Here is an example of a custom validator. Always extend from the ValidatorAdapter
class.
<?php declare(strict_types=1); namespace TWOH\Validator\Examples; use TWOH\Validator\Adapters\ValidatorAdapter; class UserValidator extends ValidatorAdapter { /** * @param string $value * @return bool */ protected function validateNotEmpty( string $value ): bool { return !empty($value); } /** * @param $value * @return bool */ protected function validateIsMail($value): bool { return filter_var($value, FILTER_VALIDATE_EMAIL) !== false; } /** * @param string $value * @return bool */ protected function validateStrengthPassword( string $value ): bool { $hasUppercase = preg_match('@[A-Z]@', $value); $hasLowercase = preg_match('@[a-z]@', $value); $hasNumber = preg_match('@[0-9]@', $value); $hasSpecialChar = preg_match('@[^\w]@', $value); return $hasUppercase && $hasLowercase && $hasNumber && $hasSpecialChar; } /** * @param string $value * @param array $params * @return bool */ protected function validateLength( string $value, array $params ): bool { $length = strlen($value); return $length >= $params['min'] && $length <= $params['max']; } }
Custom Validator Model
Here is an example of a model that uses the custom validators. It test the email and password. Therefore the functions NotEmpty
, IsMail
, StrengthPassword
and Length
are used and will be simliar as defined in UserValidator
. The only two things that is different is the @
sign in front of the function name and the missing validate
prefix.
<?php declare(strict_types=1); namespace TWOH\Validator\Examples\Models; class User { /** * @NotEmpty * @IsMail */ public string $email; /** * @NotEmpty * @StrengthPassword * @Length(min=12, max=16) */ public string $password; }
Custom Validator Usage
// define model $user = new User(); // setparams $user->email = 'a.reichel91@outlook.com'; $user->password = 'HelloWorld???10'; // init validator $validator = new UserValidator(); $errors = $validator->validate($user);
If the validation fails, the $errors
array will contain the error messages.
Existing validators
MailValidator
/** * @NotEmpty - check if value is not empty * @IsMail - check if mail is validated correctly */
PasswordValidator
/** * @NotEmpty - check if value is not empty * @StrengthPassword - check if password matches given password strength * @Length - check if is long enough */
Running Tests
To verify that the tests are passing, run the following command:
vendor/bin/phpunit