ExceptionMessageFactoryPool.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Message;
  7. class ExceptionMessageFactoryPool
  8. {
  9. /**
  10. * Instances of factories that are specific for certain exceptions
  11. *
  12. * @var ExceptionMessageFactoryInterface[]
  13. */
  14. private $exceptionMessageFactoryMap = [];
  15. /**
  16. * Default exception factory
  17. *
  18. * @var ExceptionMessageFactoryInterface
  19. */
  20. private $defaultExceptionMessageFactory;
  21. /**
  22. * @param ExceptionMessageFactoryInterface $defaultExceptionMessageFactory
  23. * @param ExceptionMessageFactoryInterface[] $exceptionMessageFactoryMap
  24. */
  25. public function __construct(
  26. ExceptionMessageFactoryInterface $defaultExceptionMessageFactory,
  27. array $exceptionMessageFactoryMap = []
  28. ) {
  29. $this->defaultExceptionMessageFactory = $defaultExceptionMessageFactory;
  30. $this->exceptionMessageFactoryMap = $exceptionMessageFactoryMap;
  31. }
  32. /**
  33. * Gets instance of a exception message factory
  34. *
  35. * @param \Exception $exception
  36. * @return ExceptionMessageFactoryInterface|null
  37. */
  38. public function getMessageFactory(\Exception $exception)
  39. {
  40. if (isset($this->exceptionMessageFactoryMap[get_class($exception)])) {
  41. return $this->exceptionMessageFactoryMap[get_class($exception)];
  42. }
  43. return $this->defaultExceptionMessageFactory;
  44. }
  45. }