| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 | <?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\OptionsResolver\Debug;use Symfony\Component\OptionsResolver\Exception\NoConfigurationException;use Symfony\Component\OptionsResolver\Exception\UndefinedOptionsException;use Symfony\Component\OptionsResolver\OptionsResolver;/** * @author Maxime Steinhausser <maxime.steinhausser@gmail.com> * * @final */class OptionsResolverIntrospector{    private $get;    public function __construct(OptionsResolver $optionsResolver)    {        $this->get = \Closure::bind(function ($property, $option, $message) {            /** @var OptionsResolver $this */            if (!$this->isDefined($option)) {                throw new UndefinedOptionsException(sprintf('The option "%s" does not exist.', $option));            }            if (!\array_key_exists($option, $this->{$property})) {                throw new NoConfigurationException($message);            }            return $this->{$property}[$option];        }, $optionsResolver, $optionsResolver);    }    /**     * @param string $option     *     * @return mixed     *     * @throws NoConfigurationException on no configured value     */    public function getDefault($option)    {        return \call_user_func($this->get, 'defaults', $option, sprintf('No default value was set for the "%s" option.', $option));    }    /**     * @param string $option     *     * @return \Closure[]     *     * @throws NoConfigurationException on no configured closures     */    public function getLazyClosures($option)    {        return \call_user_func($this->get, 'lazy', $option, sprintf('No lazy closures were set for the "%s" option.', $option));    }    /**     * @param string $option     *     * @return string[]     *     * @throws NoConfigurationException on no configured types     */    public function getAllowedTypes($option)    {        return \call_user_func($this->get, 'allowedTypes', $option, sprintf('No allowed types were set for the "%s" option.', $option));    }    /**     * @param string $option     *     * @return mixed[]     *     * @throws NoConfigurationException on no configured values     */    public function getAllowedValues($option)    {        return \call_user_func($this->get, 'allowedValues', $option, sprintf('No allowed values were set for the "%s" option.', $option));    }    /**     * @param string $option     *     * @return \Closure     *     * @throws NoConfigurationException on no configured normalizer     */    public function getNormalizer($option)    {        return \call_user_func($this->get, 'normalizers', $option, sprintf('No normalizer was set for the "%s" option.', $option));    }}
 |