<?php

declare(strict_types=1);

namespace App\Framework\Core;

final readonly class AttributeMapperLocator
{
    private InterfaceImplementationLocator $locator;

    public function __construct()
    {
        $this->locator = new InterfaceImplementationLocator();
    }

    /**
     * Findet alle Klassen, die das AttributeMapper-Interface implementieren
     *
     * @param string $directory Das Basisverzeichnis, in dem gesucht werden soll
     * @return AttributeMapper[] Array von AttributeMapper-Instanzen
     */
    public function locateMappers(string $directory): array
    {
        /** @var AttributeMapper[] $mappers */
        $mappers = $this->locator->locate($directory, AttributeMapper::class);

        return $mappers;
    }
}
