. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\ORM; /** * Event dispatcher. */ class EventDispatcher { /** @var array{'metadataUpdate': callable[]} */ private $data; private const METADATA_UPDATE = 'metadataUpdate'; public function __construct() { $this->data = [ self::METADATA_UPDATE => [], ]; } public function subscribeToMetadataUpdate(callable $callback): void { $this->data[self::METADATA_UPDATE][] = $callback; } public function dispatchMetadataUpdate(): void { foreach ($this->data[self::METADATA_UPDATE] as $callback) { $callback(); } } }