1. Go to this page and download the library: Download migears/validator library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use MiGears\I18n\ArrayTranslator;
$translator = new ArrayTranslator('en', [
'validation.axLength' => '{field} must not exceed {max} characters',
'validation.email' => '{field} must be a valid email address',
'validation.min' => '{field} must be at least {min}',
'validation.max' => '{field} must not exceed {max}',
'validation.integer' => '{field} must be an integer',
'validation.url' => '{field} must be a valid URL',
'validation.pattern' => '{field} format is invalid',
]);
$fieldLabels = [
'username' => 'Username',
'email' => 'Email address',
];
$errors = $validator->validate($_POST, $rules);
if ($errors !== []) {
$messages = [];
foreach ($errors as $field => $error) {
$messages[$field] = $translator->get(
"validation.{$error['rule']}",
['field' => $fieldLabels[$field] ?? $field, ...$error['params']]
);
}
// Pass to view: messages + old input for repopulation
return $view->render('form', [
'errors' => $messages,
'old' => $_POST,
]);
}
$errors = $validator->validate($input, $rules);
if (isset($errors['email'])) {
match ($errors['email']['rule']) {
''),
};
}
if (isset($errors['username']) && $errors['username']['rule'] === 'minLength') {
$min = $errors['username']['params']['min'];
$logger->info("Username too short, minimum is {$min}");
}
class UserDomain
{
use \MiGears\Domain\Validatable;
public function __construct(
public readonly string $username,
public readonly string $email,
) {}
protected static function validationRules(): array
{
return [
'username' => ['
['enum' => ['A', 'B']] // allowed set, same as ['enum' => 'A|B']
['pattern' => ['/^[a-z]+$/']] // same as ['pattern' => '/^[a-z]+$/']
['minLength' => [5]] // same as ['minLength' => 5]
['custom' => new MyCustomRule()]
[0 => '
use MiGears\Validator\RuleInterface;
final class StrongPasswordRule implements RuleInterface
{
public function validate(mixed $value): bool
{
return is_string($value)
&& strlen($value) >= 8
&& preg_match('/[A-Z]/', $value)
&& preg_match('/[0-9]/', $value);
}
public function getErrorCode(): string
{
return 'strongPassword';
}
public function getErrorParams(): array
{
return [];
}
}
use MiGears\Validator\Validator;
$validator = new Validator();
$validator->register(StrongPasswordRule::class);
// true if it overrode an existing rule (e.g. replacing a built-in) — log a
// warning in that case if you care
if ($validator->register(\MiGears\Validator\Rules\EmailRule::class)) {
// overwritten an existing rule
}
$errors = $validator->validate($data, [
'password' => ['
$validator->register(StrengthRule::class);
$validator->validate($data, ['password' => ['strength' => 12]]); // new StrengthRule(12)
$errors = $validator->validate($input, $rules);
if (isset($errors['email'])) {
match ($errors['email']['rule']) {
' };
}
if ($errors['username']['rule'] === 'minLength') {
$min = $errors['username']['params']['min'];
$logger->info("用户名太短,最少需要 {$min} 个字符");
}
class UserDomain
{
use \MiGears\Domain\Validatable;
public function __construct(
public readonly string $username,
public readonly string $email,
) {}
protected static function validationRules(): array
{
return [
'username' => ['
use MiGears\Validator\RuleInterface;
final class StrongPasswordRule implements RuleInterface
{
public function validate(mixed $value): bool
{
return is_string($value)
&& strlen($value) >= 8
&& preg_match('/[A-Z]/', $value)
&& preg_match('/[0-9]/', $value);
}
public function getErrorCode(): string
{
return 'strongPassword';
}
public function getErrorParams(): array
{
return [];
}
}
use MiGears\Validator\Validator;
$validator = new Validator();
$validator->register(StrongPasswordRule::class);
// 若返回 true,表示覆盖了已有的规则(例如替换内置规则),此时可酌情记录 warn
if ($validator->register(\MiGears\Validator\Rules\EmailRule::class)) {
// 覆盖了已有规则
}
$errors = $validator->validate($data, [
'password' => ['
$validator->register(StrengthRule::class);
$validator->validate($data, ['password' => ['strength' => 12]]); // new StrengthRule(12)
$validator = new Validator();
$validator->register(new UniqueEmailRule($dao)); // 别名:uniqueEmail(取自 getErrorCode())
$validator = new Validator([
StrongPasswordRule::class,
CustomDomainRules\EmailRule::class, // 覆盖内置 `email`
]);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.