Skip to content

Commit 9250641

Browse files
authored
Merge pull request #16 from nonamephp/feature/validator-add
Validator: Add values and rules after construct
2 parents 21b19a5 + 0c071bd commit 9250641

File tree

2 files changed

+110
-0
lines changed

2 files changed

+110
-0
lines changed

src/Validator.php

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,72 @@ public static function __callStatic($method, $arguments)
147147
throw new \BadMethodCallException("Validator::{$method}() not defined.");
148148
}
149149

150+
/**
151+
* Add value.
152+
*
153+
* @param string $name
154+
* @param mixed $value
155+
*/
156+
public function addValue(string $name, $value)
157+
{
158+
$this->values->set($name, $value);
159+
}
160+
161+
/**
162+
* Add multiple values.
163+
*
164+
* @param array $values
165+
*/
166+
public function addValues(array $values)
167+
{
168+
foreach ($values as $name => $value) {
169+
$this->values->set($name, $value);
170+
}
171+
}
172+
173+
/**
174+
* Get values.
175+
*
176+
* @return array
177+
*/
178+
public function values() : array
179+
{
180+
return $this->values->toArray();
181+
}
182+
183+
/**
184+
* Add rule.
185+
*
186+
* @param string $name
187+
* @param mixed $rule
188+
*/
189+
public function addRule(string $name, $rule)
190+
{
191+
$this->rules->set($name, $rule);
192+
}
193+
194+
/**
195+
* Add multiple rules.
196+
*
197+
* @param array $rules
198+
*/
199+
public function addRules(array $rules)
200+
{
201+
foreach ($rules as $name => $rule) {
202+
$this->rules->set($name, $rule);
203+
}
204+
}
205+
206+
/**
207+
* Get rules.
208+
*
209+
* @return array
210+
*/
211+
public function rules() : array
212+
{
213+
return $this->rules->toArray();
214+
}
215+
150216
/**
151217
* Validate the values based on the rules.
152218
*

tests/ValidatorTest.php

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,50 @@ protected function tearDown()
9393
///////////////////////////////////
9494
// Tests
9595

96+
/**
97+
* @covers Validator::addValue, Validator::addValues, Validator::values
98+
*/
99+
public function testAddValue()
100+
{
101+
$validator = new Validator();
102+
103+
// Add single value
104+
$validator->addValue('a', 'b');
105+
106+
// Add multiple values
107+
$validator->addValues(['b' => 'c', 'c' => 'd']);
108+
109+
// Get values from validator
110+
$values = $validator->values();
111+
112+
// Assertions
113+
$this->assertTrue(isset($values['a']) && $values['a'] == 'b');
114+
$this->assertTrue(isset($values['b']) && $values['b'] == 'c');
115+
$this->assertTrue(isset($values['c']) && $values['c'] == 'd');
116+
}
117+
118+
/**
119+
* @covers Validator::addRule, Validator::addRules, Validator::rules
120+
*/
121+
public function testAddRule()
122+
{
123+
$validator = new Validator();
124+
125+
// Add single rule
126+
$validator->addRule('a', 'int');
127+
128+
// Add multiple rules
129+
$validator->addRules(['b' => 'str', 'c' => 'bool']);
130+
131+
// Get rules from validator
132+
$rules = $validator->rules();
133+
134+
// Assertions
135+
$this->assertTrue(isset($rules['a']) && $rules['a'] == 'int');
136+
$this->assertTrue(isset($rules['b']) && $rules['b'] == 'str');
137+
$this->assertTrue(isset($rules['c']) && $rules['c'] == 'bool');
138+
}
139+
96140
/**
97141
* @covers Validator::validate, Validator::hasErrors, Validator::getErrors
98142
*/

0 commit comments

Comments
 (0)