for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Yiisoft\Validator;
use Yiisoft\Validator\Rule\Callback;
/**
* Validator validates {@link DataSetInterface} against rules set for data set attributes.
*/
class Validator
{
* @var Rules[]
private $attributeRules;
* Validator constructor.
* @param $rules
public function __construct(iterable $rules = [])
foreach ($rules as $attribute => $ruleSets) {
foreach ($ruleSets as $rule) {
if (is_callable($rule)) {
$rule = new Callback($rule);
}
$this->addRule($attribute, $rule);
public function validate(DataSetInterface $dataSet): ResultSet
$results = new ResultSet();
foreach ($this->attributeRules as $attribute => $rules) {
$results->addResult($attribute, $rules->validate($dataSet->getValue($attribute)));
return $results;
public function addRule(string $attribute, Rule $rule): self
if (!isset($this->attributeRules[$attribute])) {
$this->attributeRules[$attribute] = new Rules();
$this->attributeRules[$attribute]->add($rule);
return $this;