diff options
| author | Asko Nõmm <asko@repl.ee> | 2023-09-25 01:35:47 +0300 |
|---|---|---|
| committer | Asko Nõmm <asko@repl.ee> | 2023-09-25 01:35:47 +0300 |
| commit | ef1dd318d437bb33adddf226c546e85f4744ce8c (patch) | |
| tree | 8910bd4cc0b2ce2827aecfa19ecf2453058af575 /src | |
| parent | d2a1290423e1102b23fc8e042cef5420a42c02af (diff) | |
Update stuff
Diffstat (limited to 'src')
| -rw-r--r-- | src/Hird.php | 35 | ||||
| -rw-r--r-- | src/Validators/DateFormatValidator.php | 14 | ||||
| -rw-r--r-- | src/Validators/EmailValidator.php | 14 | ||||
| -rw-r--r-- | src/Validators/LenValidator.php | 12 | ||||
| -rw-r--r-- | src/Validators/RequiredValidator.php | 12 | ||||
| -rw-r--r-- | src/Validators/Validator.php | 8 |
6 files changed, 57 insertions, 38 deletions
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 <asko@bien.ee> + * @author Asko Nomm <asko@asko.dev> */ 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 @@ <?php -namespace Askonomm\Hird\Validators; +declare(strict_types=1); + +namespace Asko\Hird\Validators; /** * Implements a DateFormat validator that has a job * of validating that a given date is in the correct * format. * - * @author Asko Nomm <asko@bien.ee> + * @author Asko Nomm <asko@asko.dev> */ 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 @@ <?php -namespace Askonomm\Hird\Validators; +declare(strict_types=1); + +namespace Asko\Hird\Validators; /** * Implements an e-mail validator that has a job * of validating e-mail addresses. * - * @author Asko Nomm <asko@bien.ee> + * @author Asko Nomm <asko@asko.dev> */ 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 @@ <?php -namespace Askonomm\Hird\Validators; +declare(strict_types=1); + +namespace Asko\Hird\Validators; /** * Implements a length validator that has a job of validating * that a given string is of correct length. * - * @author Asko Nomm <asko@bien.ee> + * @author Asko Nomm <asko@asko.dev> */ 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 @@ <?php -namespace Askonomm\Hird\Validators; +declare(strict_types=1); + +namespace Asko\Hird\Validators; /** * Implements a length validator that has a job of validating * that a given string is of correct length. * - * @author Asko Nomm <asko@bien.ee> + * @author Asko Nomm <asko@asko.dev> */ 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 @@ <?php -namespace Askonomm\Hird\Validators; +declare(strict_types=1); + +namespace Asko\Hird\Validators; interface Validator { - public static function validate(string $field, mixed $value, mixed $modifier = null): bool; - public static function composeError(string $field, mixed $modifier = null): string; + public function validate(string $field, mixed $value, mixed $modifier = null): bool; + public function composeError(string $field, mixed $modifier = null): string; } |
