1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Sales\Model;
- use Magento\Framework\Exception\ConfigurationMismatchException;
- use Magento\Framework\ObjectManagerInterface;
- /**
- * Class Validator
- *
- * @internal
- */
- class Validator
- {
- /**
- * @var ObjectManagerInterface
- */
- private $objectManager;
- /**
- * @var ValidatorResultInterfaceFactory
- */
- private $validatorResultFactory;
- /**
- * Validator constructor.
- *
- * @param ObjectManagerInterface $objectManager
- * @param ValidatorResultInterfaceFactory $validatorResult
- */
- public function __construct(
- ObjectManagerInterface $objectManager,
- ValidatorResultInterfaceFactory $validatorResult
- ) {
- $this->objectManager = $objectManager;
- $this->validatorResultFactory = $validatorResult;
- }
- /**
- * @param object $entity
- * @param ValidatorInterface[] $validators
- * @param object|null $context
- * @return ValidatorResultInterface
- * @throws ConfigurationMismatchException
- */
- public function validate($entity, array $validators, $context = null)
- {
- $messages = [];
- $validatorArguments = [];
- if ($context !== null) {
- $validatorArguments['context'] = $context;
- }
- foreach ($validators as $validatorName) {
- $validator = $this->objectManager->create($validatorName, $validatorArguments);
- if (!$validator instanceof ValidatorInterface) {
- throw new ConfigurationMismatchException(
- __('The "%1" validator is not an instance of the general validator interface.', $validatorName)
- );
- }
- $messages = array_merge($messages, $validator->validate($entity));
- }
- $validationResult = $this->validatorResultFactory->create();
- foreach ($messages as $message) {
- $validationResult->addMessage($message);
- }
- return $validationResult;
- }
- }
|