<?php

namespace xmvc\event\subscriber;

use xmvc\interface\IEventSubscriber;
use xmvc\event\MetaDeleteEvent;
use xmvc\event\MetaInsertEvent;
use xmvc\event\MetaUpdateEvent;

/**
 * 元数据变化 - 事件订阅者
 */
class MetaDataSubscriber implements IEventSubscriber
{
    private static int $priority = 9;
    public static function getSubscribedEvents(): array
    {
        return [
            MetaInsertEvent::class => ['onInsert', self::$priority],
            MetaUpdateEvent::class => ['onUpdate', self::$priority],
            MetaDeleteEvent::class => ['onDelete', self::$priority],
        ];
    }

    public function onInsert(MetaInsertEvent $event)
    {
        // handle the event
    }

    public function onUpdate(MetaUpdateEvent $event)
    {
        $event->getMeta();
        $event->getOriginalValues();
        $event->setSharedData(['abc' => 123]);
        dump('MetaDataSubscriber.onUpdate');
    }

    public function onDelete(MetaDeleteEvent $event)
    {
        // handle the event
    }
}
