/** * @param ElementInterface[] $children * * @return bool * * @throws \Exception */ private function check($children, $parentPath = '') { foreach ($children as $key => $element) { $elementPath = sprintf('%s%d[%s]', $parentPath, $key, $element->getName()); foreach ($this->rules as $rule) { try { $rule->validate($element); } catch (ValidationError $error) { $this->errorTrace->addMessage($elementPath, $error->getMessage()); } } if (!$element->isLeaf()) { $this->check($element->getChildren(), $elementPath); } } }
public function testDump() { $trace = new ErrorTrace(); $trace->addMessage('path', 'message1'); $trace->addMessage('path', 'message2'); $trace->addMessage('path2', 'message'); $trace->addMessage('path3', 'message'); $this->assertEquals("path message1\nmessage2\n" . "path2 message\n" . 'path3 message', $trace->dump()); }