1<?php
2
3/*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12namespace Symfony\Component\Config\Definition;
13
14use Symfony\Component\Config\Definition\Exception\InvalidTypeException;
15
16/**
17 * This node represents a float value in the config tree.
18 *
19 * @author Jeanmonod David <david.jeanmonod@gmail.com>
20 */
21class FloatNode extends NumericNode
22{
23    /**
24     * {@inheritdoc}
25     */
26    protected function validateType($value)
27    {
28        // Integers are also accepted, we just cast them
29        if (\is_int($value)) {
30            $value = (float) $value;
31        }
32
33        if (!\is_float($value)) {
34            $ex = new InvalidTypeException(sprintf('Invalid type for path "%s". Expected "float", but got "%s".', $this->getPath(), get_debug_type($value)));
35            if ($hint = $this->getInfo()) {
36                $ex->addHint($hint);
37            }
38            $ex->setPath($this->getPath());
39
40            throw $ex;
41        }
42    }
43
44    /**
45     * {@inheritdoc}
46     */
47    protected function getValidPlaceholderTypes(): array
48    {
49        return ['float'];
50    }
51}
52