<?php

declare(strict_types=1);

namespace Fennec\Container;

use Fennec\Exception\FennecException;

/**
 * Levée quand l'autowiring ne peut pas déterminer la valeur d'un paramètre de constructeur
 * (type non-classe sans valeur par défaut, type union/intersection, etc.).
 */
final class UnresolvableParameterException extends FennecException
{
    /**
     * @param class-string $className Classe dont le constructeur porte le paramètre en cause.
     * @param string $parameterName Nom du paramètre (sans le $).
     * @param string $reason Explication technique de l'échec de résolution.
     */
    public function __construct(string $className, string $parameterName, string $reason)
    {
        parent::__construct(\sprintf(
            'Cannot resolve parameter "$%s" of "%s": %s',
            $parameterName,
            $className,
            $reason,
        ));
    }
}
