validators = $tmapFactory->create( [ 'array' => $validators, 'type' => ValidatorInterface::class ] ); $this->chainBreakingValidators = $chainBreakingValidators; parent::__construct($resultFactory); } /** * Performs domain level validation for business object * * @param array $validationSubject * @return ResultInterface */ public function validate(array $validationSubject) { $isValid = true; $failsDescriptionAggregate = []; $errorCodesAggregate = []; foreach ($this->validators as $key => $validator) { $result = $validator->validate($validationSubject); if (!$result->isValid()) { $isValid = false; $failsDescriptionAggregate = array_merge( $failsDescriptionAggregate, $result->getFailsDescription() ); $errorCodesAggregate = array_merge( $errorCodesAggregate, $result->getErrorCodes() ); if (!empty($this->chainBreakingValidators[$key])) { break; } } } return $this->createResult($isValid, $failsDescriptionAggregate, $errorCodesAggregate); } }