Event.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. /**
  7. * Event object and dispatcher
  8. *
  9. * @author Magento Core Team <core@magentocommerce.com>
  10. */
  11. namespace Magento\Framework;
  12. /**
  13. * @api
  14. * @since 100.0.2
  15. */
  16. class Event extends \Magento\Framework\DataObject
  17. {
  18. /**
  19. * Observers collection
  20. *
  21. * @var \Magento\Framework\Event\Observer\Collection
  22. */
  23. protected $_observers;
  24. /**
  25. * Constructor
  26. *
  27. * Initializes observers collection
  28. *
  29. * @param array $data
  30. */
  31. public function __construct(array $data = [])
  32. {
  33. $this->_observers = new \Magento\Framework\Event\Observer\Collection();
  34. parent::__construct($data);
  35. }
  36. /**
  37. * Returns all the registered observers for the event
  38. *
  39. * @return \Magento\Framework\Event\Observer\Collection
  40. */
  41. public function getObservers()
  42. {
  43. return $this->_observers;
  44. }
  45. /**
  46. * Register an observer for the event
  47. *
  48. * @param \Magento\Framework\Event\Observer $observer
  49. * @return $this
  50. */
  51. public function addObserver(\Magento\Framework\Event\Observer $observer)
  52. {
  53. $this->getObservers()->addObserver($observer);
  54. return $this;
  55. }
  56. /**
  57. * Removes an observer by its name
  58. *
  59. * @param string $observerName
  60. * @return $this
  61. */
  62. public function removeObserverByName($observerName)
  63. {
  64. $this->getObservers()->removeObserverByName($observerName);
  65. return $this;
  66. }
  67. /**
  68. * Dispatches the event to registered observers
  69. *
  70. * @return $this
  71. */
  72. public function dispatch()
  73. {
  74. $this->getObservers()->dispatch($this);
  75. return $this;
  76. }
  77. /**
  78. * Retrieve event name
  79. *
  80. * @return string
  81. */
  82. public function getName()
  83. {
  84. return $this->_data['name'] ?? null;
  85. }
  86. /**
  87. * @param string $data
  88. * @return $this
  89. */
  90. public function setName($data)
  91. {
  92. $this->_data['name'] = $data;
  93. return $this;
  94. }
  95. /**
  96. * @return mixed
  97. */
  98. public function getBlock()
  99. {
  100. return $this->_getData('block');
  101. }
  102. }