<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Symfony\Component\Routing\Exception;

/**
 * Exception thrown when a route cannot be generated because of missing
 * mandatory parameters.
 *
 * @author Alexandre Salomé <alexandre.salome@gmail.com>
 */
class MissingMandatoryParametersException extends \InvalidArgumentException implements ExceptionInterface
{
    private string $routeName = '';
    private array $missingParameters = [];

    /**
     * @param string[] $missingParameters
     */
    public function __construct(string $routeName = '', array $missingParameters = [], int $code = 0, ?\Throwable $previous = null)
    {
        $this->routeName = $routeName;
        $this->missingParameters = $missingParameters;
        $message = \sprintf('Some mandatory parameters are missing ("%s") to generate a URL for route "%s".', implode('", "', $missingParameters), $routeName);

        parent::__construct($message, $code, $previous);
    }

    /**
     * @return string[]
     */
    public function getMissingParameters(): array
    {
        return $this->missingParameters;
    }

    public function getRouteName(): string
    {
        return $this->routeName;
    }
}
                                                                                                                                                   {
    "name": "symfony/routing",
    "type": "library",
    "description": "Maps an HTTP request to a set of configuration variables",
    "keywords": ["routing", "router", "url", "uri"],
    "homepage": "https://symfony.com",
    "license": "MIT",
    "authors": [
        {
            "name": "Fabien Potencier",
            "email": "fabien@symfony.com"
        },
        {
            "name": "Symfony Community",
            "homepage": "https://symfony.com/contributors"
        }
    ],
    "require": {
        "php": ">=8.2",
        "symfony/deprecation-contracts": "^2.5|^3"
    },
    "require-dev": {
        "symfony/config": "^6.4|^7.0|^8.0",
        "symfony/http-foundation": "^6.4|^7.0|^8.0",
        "symfony/yaml": "^6.4|^7.0|^8.0",
        "symfony/expression-language": "^6.4|^7.0|^8.0",
        "symfony/dependency-injection": "^6.4|^7.0|^8.0",
        "psr/log": "^1|^2|^3"
    },
    "conflict": {
        "symfony/config": "<6.4",
        "symfony/dependency-injection": "<6.4",
        "symfony/yaml": "<6.4"
    },
    "autoload": {
        "psr-4": { "Symfony\\Component\\Routing\\": "" },
        "exclude-from-classmap": [
            "/Tests/"
        ]
    },
    "minimum-stability": "dev"
}
