<?php

declare(strict_types=1);

namespace Fennec\Container;

use Fennec\Exception\FennecException;

/**
 * Levée quand la résolution d'une classe redemande, directement ou indirectement,
 * une classe déjà en cours de résolution dans la même chaîne d'appels.
 */
final class CircularDependencyException extends FennecException
{
    /**
     * @param list<class-string> $resolutionChain Chaîne des classes en cours de résolution, dans l'ordre.
     * @param class-string $offendingClass Classe déjà présente dans la chaîne, redemandée en boucle.
     */
    public function __construct(array $resolutionChain, string $offendingClass)
    {
        parent::__construct(\sprintf(
            'Circular dependency detected: %s -> %s.',
            \implode(' -> ', $resolutionChain),
            $offendingClass,
        ));
    }
}
