summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Hird.php35
-rw-r--r--src/Validators/DateFormatValidator.php14
-rw-r--r--src/Validators/EmailValidator.php14
-rw-r--r--src/Validators/LenValidator.php12
-rw-r--r--src/Validators/RequiredValidator.php12
-rw-r--r--src/Validators/Validator.php8
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;
}