From ef1dd318d437bb33adddf226c546e85f4744ce8c Mon Sep 17 00:00:00 2001 From: Asko Nõmm Date: Mon, 25 Sep 2023 01:35:47 +0300 Subject: Update stuff --- src/Hird.php | 35 +++++++++++++++++++++------------- src/Validators/DateFormatValidator.php | 14 ++++++++------ src/Validators/EmailValidator.php | 14 ++++++++------ src/Validators/LenValidator.php | 12 +++++++----- src/Validators/RequiredValidator.php | 12 +++++++----- src/Validators/Validator.php | 8 +++++--- 6 files changed, 57 insertions(+), 38 deletions(-) (limited to 'src') diff --git a/src/Hird.php b/src/Hird.php index 933afe0..d1b85cc 100644 --- a/src/Hird.php +++ b/src/Hird.php @@ -2,13 +2,13 @@ declare(strict_types=1); -namespace Askonomm\Hird; +namespace Asko\Hird; -use Askonomm\Hird\Validators\DateFormatValidator; -use Askonomm\Hird\Validators\Validator; -use Askonomm\Hird\Validators\LenValidator; -use Askonomm\Hird\Validators\EmailValidator; -use Askonomm\Hird\Validators\RequiredValidator; +use Asko\Hird\Validators\DateFormatValidator; +use Asko\Hird\Validators\Validator; +use Asko\Hird\Validators\LenValidator; +use Asko\Hird\Validators\EmailValidator; +use Asko\Hird\Validators\RequiredValidator; /** * Hird takes in an array of `$fields` and an array of @@ -41,7 +41,7 @@ use Askonomm\Hird\Validators\RequiredValidator; * } * ``` * - * @author Asko Nomm + * @author Asko Nomm */ class Hird { @@ -62,10 +62,10 @@ class Hird */ private function registerDefaultValidators(): void { - $this->registerValidator('len', (new LenValidator)); - $this->registerValidator('email', (new EmailValidator)); - $this->registerValidator('required', (new RequiredValidator)); - $this->registerValidator('date-format', (new DateFormatValidator)); + $this->registerValidator('len', LenValidator::class); + $this->registerValidator('email', EmailValidator::class); + $this->registerValidator('required', RequiredValidator::class); + $this->registerValidator('date-format', DateFormatValidator::class); } /** @@ -75,9 +75,18 @@ class Hird * @param Validator $validator * @return void */ - public function registerValidator(string $ruleName, Validator $validator): void + public function registerValidator(string $ruleName, string $validator): void { - $this->validators[$ruleName] = $validator; + $class = new \ReflectionClass($validator); + $instance = null; + + if ($class->getConstructor() !== null) { + $instance = $class->newInstanceArgs([$this->fields]); + } else { + $instance = $class->newInstance(); + } + + $this->validators[$ruleName] = $instance; } /** diff --git a/src/Validators/DateFormatValidator.php b/src/Validators/DateFormatValidator.php index fedbb7d..50312ea 100644 --- a/src/Validators/DateFormatValidator.php +++ b/src/Validators/DateFormatValidator.php @@ -1,13 +1,15 @@ + * @author Asko Nomm */ class DateFormatValidator implements Validator { @@ -20,12 +22,12 @@ class DateFormatValidator implements Validator * @param mixed $modifier * @return boolean */ - public static function validate(string $field, mixed $value, mixed $modifier = null): bool + public function validate(string $field, mixed $value, mixed $modifier = null): bool { if ($value) { $datetime = \DateTime::createFromFormat($modifier, $value); - return $datetime !== false && !array_sum($datetime::getLastErrors()); + return $datetime !== false; } return true; @@ -38,8 +40,8 @@ class DateFormatValidator implements Validator * @param mixed $modifier * @return string */ - public static function composeError(string $field, mixed $modifier = null): string + public function composeError(string $field, mixed $modifier = null): string { - return "${field} does not match the required date format ${modifier}."; + return "{$field} does not match the required date format {$modifier}."; } } diff --git a/src/Validators/EmailValidator.php b/src/Validators/EmailValidator.php index 180c22d..bbb237f 100644 --- a/src/Validators/EmailValidator.php +++ b/src/Validators/EmailValidator.php @@ -1,12 +1,14 @@ + * @author Asko Nomm */ class EmailValidator implements Validator { @@ -18,9 +20,9 @@ class EmailValidator implements Validator * @param mixed $modifier * @return boolean */ - public static function validate(string $field, mixed $value, mixed $modifier = null): bool + public function validate(string $field, mixed $value, mixed $modifier = null): bool { - return filter_var($value, FILTER_VALIDATE_EMAIL); + return !!filter_var($value, FILTER_VALIDATE_EMAIL); } /** @@ -30,8 +32,8 @@ class EmailValidator implements Validator * @param mixed $modifier * @return string */ - public static function composeError(string $field, mixed $modifier = null): string + public function composeError(string $field, mixed $modifier = null): string { - return "${field} is not a valid e-mail address."; + return "{$field} is not a valid e-mail address."; } } diff --git a/src/Validators/LenValidator.php b/src/Validators/LenValidator.php index c5a152b..ca4e486 100644 --- a/src/Validators/LenValidator.php +++ b/src/Validators/LenValidator.php @@ -1,12 +1,14 @@ + * @author Asko Nomm */ class LenValidator implements Validator { @@ -18,7 +20,7 @@ class LenValidator implements Validator * @param mixed $modifier * @return boolean */ - public static function validate(string $field, mixed $value, mixed $modifier = null): bool + public function validate(string $field, mixed $value, mixed $modifier = null): bool { // If no modifier present then this validator will always validate. if (!$modifier) { @@ -39,8 +41,8 @@ class LenValidator implements Validator * @param mixed $modifier * @return string */ - public static function composeError(string $field, mixed $modifier = null): string + public function composeError(string $field, mixed $modifier = null): string { - return "{$field} is shorter than the required ${modifier} characters."; + return "{$field} is shorter than the required {$modifier} characters."; } } diff --git a/src/Validators/RequiredValidator.php b/src/Validators/RequiredValidator.php index acfcce5..48bc28b 100644 --- a/src/Validators/RequiredValidator.php +++ b/src/Validators/RequiredValidator.php @@ -1,12 +1,14 @@ + * @author Asko Nomm */ class RequiredValidator implements Validator { @@ -18,7 +20,7 @@ class RequiredValidator implements Validator * @param mixed $modifier * @return boolean */ - public static function validate(string $field, mixed $value, mixed $modifier = null): bool + public function validate(string $field, mixed $value, mixed $modifier = null): bool { return isset($value) && $value !== ''; } @@ -30,8 +32,8 @@ class RequiredValidator implements Validator * @param mixed $modifier * @return string */ - public static function composeError(string $field, mixed $modifier = null): string + public function composeError(string $field, mixed $modifier = null): string { - return "${field} is required."; + return "{$field} is required."; } } diff --git a/src/Validators/Validator.php b/src/Validators/Validator.php index 8e5e994..d7c1a20 100644 --- a/src/Validators/Validator.php +++ b/src/Validators/Validator.php @@ -1,9 +1,11 @@