<?php

declare(strict_types=1);

namespace App\Framework\Core;

use App\Framework\Reflection\WrappedReflectionClass;
use App\Framework\Reflection\WrappedReflectionMethod;

/**
 * Interface für AttributeMapper mit Framework Reflection Module
 */
interface AttributeMapper
{
    /**
     * Gibt die Attributklasse zurück, die dieser Mapper verarbeiten kann
     */
    public function getAttributeClass(): string;

    /**
     * Maps attributes using Framework Reflection Module
     * @param WrappedReflectionClass|WrappedReflectionMethod $reflectionTarget
     * @param object $attributeInstance
     * @return array|null
     */
    public function map(WrappedReflectionClass|WrappedReflectionMethod $reflectionTarget, object $attributeInstance): ?array;
}
