public function __invoke(array $item)
{
if (!$this->strict) {
// Only validate properties which have an constaint.
$temp = array_intersect(array_keys($item), array_keys($this->constraints));
$item = array_intersect_key($item, array_flip($temp));
}
$constraints = new Constraints\Collection($this->constraints);
$list = $this->validator->validate($item, $constraints);
$currentLine = $this->line++;
if (count($list) > 0) {
$this->violations[$currentLine] = $list;
if ($this->throwExceptions) {
throw new ValidationException($list, $currentLine);
}
}
return 0 === count($list);
}