Collection.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. /**
  7. * Event observer collection
  8. *
  9. * @author Magento Core Team <core@magentocommerce.com>
  10. */
  11. namespace Magento\Framework\Event\Observer;
  12. /**
  13. * @api
  14. * @since 100.0.2
  15. */
  16. class Collection
  17. {
  18. /**
  19. * Array of observers
  20. *
  21. * @var array
  22. */
  23. protected $_observers;
  24. /**
  25. * Initializes observers
  26. */
  27. public function __construct()
  28. {
  29. $this->_observers = [];
  30. }
  31. /**
  32. * Returns all observers in the collection
  33. *
  34. * @return array
  35. */
  36. public function getAllObservers()
  37. {
  38. return $this->_observers;
  39. }
  40. /**
  41. * Returns observer by its name
  42. *
  43. * @param string $observerName
  44. * @return \Magento\Framework\Event\Observer
  45. */
  46. public function getObserverByName($observerName)
  47. {
  48. return $this->_observers[$observerName];
  49. }
  50. /**
  51. * Adds an observer to the collection
  52. *
  53. * @param \Magento\Framework\Event\Observer $observer
  54. * @return $this
  55. */
  56. public function addObserver(\Magento\Framework\Event\Observer $observer)
  57. {
  58. $this->_observers[$observer->getName()] = $observer;
  59. return $this;
  60. }
  61. /**
  62. * Removes an observer from the collection by its name
  63. *
  64. * @param string $observerName
  65. * @return $this
  66. */
  67. public function removeObserverByName($observerName)
  68. {
  69. unset($this->_observers[$observerName]);
  70. return $this;
  71. }
  72. /**
  73. * Dispatches an event to all observers in the collection
  74. *
  75. * @param \Magento\Framework\Event $event
  76. * @return $this
  77. */
  78. public function dispatch(\Magento\Framework\Event $event)
  79. {
  80. foreach ($this->_observers as $observer) {
  81. $observer->dispatch($event);
  82. }
  83. return $this;
  84. }
  85. }