invalidElements = $invalidElements; parent::__construct($message, $code, $previous); } /** * @param InputFilterInterface $inputFilter * @param \Throwable|null $prev * @return ValidationException */ public static function fromInputFilter(InputFilterInterface $inputFilter, ?Throwable $prev = null): self { return static::fromArray($inputFilter->getMessages(), $prev); } /** * @param array $invalidData * @param \Throwable|null $prev * @return ValidationException */ private static function fromArray(array $invalidData, ?Throwable $prev = null): self { return new self( sprintf( 'Provided data is not valid. These are the messages:%s%s%s', PHP_EOL, self::formMessagesToString($invalidData), PHP_EOL ), $invalidData, -1, $prev ); } private static function formMessagesToString(array $messages = []) { $text = ''; foreach ($messages as $name => $messageSet) { $text .= sprintf( "\n\t'%s' => %s", $name, is_array($messageSet) ? print_r($messageSet, true) : $messageSet ); } return $text; } /** * @return array */ public function getInvalidElements(): array { return $this->invalidElements; } }