From 57518b03cbf19b8a714d6fcb573f71cb921005e3 Mon Sep 17 00:00:00 2001 From: Asko Nõmm Date: Mon, 25 Sep 2023 17:29:52 +0300 Subject: Implement `$fieldNames`, a way to overwrite field names to be more human friendly in error messages. --- src/Hird.php | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'src/Hird.php') diff --git a/src/Hird.php b/src/Hird.php index d1b85cc..f60eca8 100644 --- a/src/Hird.php +++ b/src/Hird.php @@ -47,11 +47,14 @@ class Hird { private array $errors = []; private array $validators = []; + private array $fieldNames = []; public function __construct( private array $fields, private array $rules, + array $fieldNames = [] ) { + $this->composeFieldNames($fieldNames); $this->registerDefaultValidators(); } @@ -68,6 +71,23 @@ class Hird $this->registerValidator('date-format', DateFormatValidator::class); } + /** + * Composes the field names array. + * + * @param array $fieldNames + * @return void + */ + private function composeFieldNames(array $fieldNames): void + { + $updatedFieldNames = []; + + foreach ($this->fields as $field => $value) { + $updatedFieldNames[$field] = $fieldNames[$field] ?? $field; + } + + $this->fieldNames = $updatedFieldNames; + } + /** * Registers a validator to a `$ruleName`. * @@ -81,7 +101,7 @@ class Hird $instance = null; if ($class->getConstructor() !== null) { - $instance = $class->newInstanceArgs([$this->fields]); + $instance = $class->newInstanceArgs([$this->fields, $this->fieldNames]); } else { $instance = $class->newInstance(); } -- cgit v1.2.3