From 6583f878664817f84b43889a789b7c951f9fa8e0 Mon Sep 17 00:00:00 2001 From: Victor Westerlund Date: Mon, 20 Nov 2023 15:15:34 +0100 Subject: [PATCH] fix: pass scope for all eval methods (#4) --- src/Rules.php | 16 ++++++++-------- src/Ruleset.php | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/Rules.php b/src/Rules.php index 3512ec4..56d1d74 100644 --- a/src/Rules.php +++ b/src/Rules.php @@ -141,22 +141,22 @@ }; } - public function eval_min(mixed $value): bool { + public function eval_min(mixed $value, Scope $scope): bool { return match($this->type) { - Type::NUMBER => $this->eval_type($value) && $value >= $this->min, - Type::STRING => $this->eval_type($value) && strlen($value) >= $this->min, + Type::NUMBER => $this->eval_type($value, $scope) && $value >= $this->min, + Type::STRING => $this->eval_type($value, $scope) && strlen($value) >= $this->min, Type::ARRAY, - Type::OBJECT => $this->eval_type($value) && count($value) >= $this->min, + Type::OBJECT => $this->eval_type($value, $scope) && count($value) >= $this->min, default => true }; } - public function eval_max(mixed $value): bool { + public function eval_max(mixed $value, Scope $scope): bool { return match($this->type) { - Type::NUMBER => $this->eval_type($value) && $value <= $this->max, - Type::STRING => $this->eval_type($value) && strlen($value) <= $this->max, + Type::NUMBER => $this->eval_type($value, $scope) && $value <= $this->max, + Type::STRING => $this->eval_type($value, $scope) && strlen($value) <= $this->max, Type::ARRAY, - Type::OBJECT => $this->eval_type($value) && count($value) <= $this->max, + Type::OBJECT => $this->eval_type($value, $scope) && count($value) <= $this->max, default => true }; } diff --git a/src/Ruleset.php b/src/Ruleset.php index 87b98c1..cf3afe3 100644 --- a/src/Ruleset.php +++ b/src/Ruleset.php @@ -84,11 +84,11 @@ $this->add_error($name, "Value must be of type '{$rules->type->name}'"); } - if ($rules->min && !$rules->eval_min($value)) { + if ($rules->min && !$rules->eval_min($value, $scope)) { $this->add_error($name, "Value must be larger or equal to {$rules->min}"); } - if ($rules->max && !$rules->eval_max($value)) { + if ($rules->max && !$rules->eval_max($value, $scope)) { $this->add_error($name, "Value must be smaller or equal to {$rules->max}"); } }