ClassModelRegistry.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Tax\Model;
  7. use Magento\Framework\Exception\NoSuchEntityException;
  8. use Magento\Tax\Model\ClassModel as TaxClassModel;
  9. use Magento\Tax\Model\ClassModelFactory as TaxClassModelFactory;
  10. /**
  11. * Registry for the tax class models
  12. */
  13. class ClassModelRegistry
  14. {
  15. /**
  16. * Tax class model factory
  17. *
  18. * @var TaxClassModelFactory
  19. */
  20. private $taxClassModelFactory;
  21. /**
  22. * Tax class models
  23. *
  24. * @var TaxClassModel[]
  25. */
  26. private $taxClassRegistryById = [];
  27. /**
  28. * Initialize dependencies
  29. *
  30. * @param TaxClassModelFactory $taxClassModelFactory
  31. */
  32. public function __construct(TaxClassModelFactory $taxClassModelFactory)
  33. {
  34. $this->taxClassModelFactory = $taxClassModelFactory;
  35. }
  36. /**
  37. * Add tax class model to the registry
  38. *
  39. * @param TaxClassModel $taxClassModel
  40. * @return void
  41. */
  42. public function registerTaxClass(TaxClassModel $taxClassModel)
  43. {
  44. $this->taxClassRegistryById[$taxClassModel->getId()] = $taxClassModel;
  45. }
  46. /**
  47. * Retrieve tax class model from the registry
  48. *
  49. * @param int $taxClassId
  50. * @return TaxClassModel
  51. * @throws NoSuchEntityException
  52. */
  53. public function retrieve($taxClassId)
  54. {
  55. if (isset($this->taxClassRegistryById[$taxClassId])) {
  56. return $this->taxClassRegistryById[$taxClassId];
  57. }
  58. /** @var TaxClassModel $taxClassModel */
  59. $taxClassModel = $this->taxClassModelFactory->create()->load($taxClassId);
  60. if (!$taxClassModel->getId()) {
  61. // tax class does not exist
  62. throw NoSuchEntityException::singleField(TaxClassModel::KEY_ID, $taxClassId);
  63. }
  64. $this->taxClassRegistryById[$taxClassModel->getId()] = $taxClassModel;
  65. return $taxClassModel;
  66. }
  67. /**
  68. * Remove an instance of the tax class model from the registry
  69. *
  70. * @param int $taxClassId
  71. * @return void
  72. */
  73. public function remove($taxClassId)
  74. {
  75. unset($this->taxClassRegistryById[$taxClassId]);
  76. }
  77. }