<?php

namespace Kylin\Excel\Events;

/**
 * 事件基类
 * 
 * 所有Excel事件的抽象基类，定义了事件的基本结构
 * 每个事件都关联一个导入/导出对象
 */
abstract class Event
{
    /**
     * 构造函数
     * 
     * @param object $concernable 关联的导入/导出对象
     */
    public function __construct(
        protected object $concernable,
    ) {}

    /**
     * 获取事件名称
     * 
     * 子类必须实现此方法，返回事件名称
     * 
     * @return string 事件名称
     */
    abstract public function getName(): string;

    /**
     * 获取关联的导入/导出对象
     * 
     * @return object 导入/导出对象
     */
    public function getConcernable(): object
    {
        return $this->concernable;
    }
}
