RelationComposite.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Model\ResourceModel\Db\VersionControl;
  7. use Magento\Framework\Model\AbstractModel;
  8. use Magento\Framework\Event\ManagerInterface as EventManager;
  9. /**
  10. * Class RelationComposite
  11. */
  12. class RelationComposite
  13. {
  14. /**
  15. * @var array
  16. */
  17. protected $relationProcessors;
  18. /**
  19. * @var EventManager
  20. */
  21. protected $eventManager;
  22. /**
  23. * @param EventManager $eventManager
  24. * @param array $relationProcessors
  25. */
  26. public function __construct(
  27. EventManager $eventManager,
  28. array $relationProcessors = []
  29. ) {
  30. $this->eventManager = $eventManager;
  31. $this->relationProcessors = $relationProcessors;
  32. }
  33. /**
  34. * Process model's relations saves
  35. *
  36. * @param AbstractModel $object
  37. * @return void
  38. */
  39. public function processRelations(AbstractModel $object)
  40. {
  41. foreach ($this->relationProcessors as $processor) {
  42. /**@var $processor RelationInterface*/
  43. $processor->processRelation($object);
  44. }
  45. $this->eventManager->dispatch(
  46. $object->getEventPrefix(). '_process_relation',
  47. [
  48. 'object' => $object
  49. ]
  50. );
  51. }
  52. }