[DependencyInjection][Console] tighten types

This commit is contained in:
Nicolas Grekas 2021-07-05 08:27:11 +02:00
parent 44f08fa121
commit a35a9bb7a0
10 changed files with 31 additions and 64 deletions

View File

@ -31,10 +31,10 @@ class InputArgument
private $description; private $description;
/** /**
* @param string $name The argument name * @param string $name The argument name
* @param int|null $mode The argument mode: self::REQUIRED or self::OPTIONAL * @param int|null $mode The argument mode: self::REQUIRED or self::OPTIONAL
* @param string $description A description text * @param string $description A description text
* @param mixed $default The default value (for self::OPTIONAL mode only) * @param string|bool|int|float|array|null $default The default value (for self::OPTIONAL mode only)
* *
* @throws InvalidArgumentException When argument mode is not valid * @throws InvalidArgumentException When argument mode is not valid
*/ */
@ -86,7 +86,7 @@ class InputArgument
/** /**
* Sets the default value. * Sets the default value.
* *
* @param mixed $default The default value * @param string|bool|int|float|array|null $default
* *
* @throws LogicException When incorrect default value is given * @throws LogicException When incorrect default value is given
*/ */
@ -110,7 +110,7 @@ class InputArgument
/** /**
* Returns the default value. * Returns the default value.
* *
* @return mixed * @return string|bool|int|float|array|null
*/ */
public function getDefault() public function getDefault()
{ {

View File

@ -185,9 +185,7 @@ class InputDefinition
} }
/** /**
* Gets the default values. * @return array<string|bool|int|float|array|null>
*
* @return array An array of default values
*/ */
public function getArgumentDefaults() public function getArgumentDefaults()
{ {
@ -316,9 +314,7 @@ class InputDefinition
} }
/** /**
* Gets an array of default values. * @return array<string|bool|int|float|array|null>
*
* @return array An array of all default values
*/ */
public function getOptionDefaults() public function getOptionDefaults()
{ {

View File

@ -51,9 +51,9 @@ interface InputInterface
* Does not necessarily return the correct result for short options * Does not necessarily return the correct result for short options
* when multiple flags are combined in the same option. * when multiple flags are combined in the same option.
* *
* @param string|array $values The value(s) to look for in the raw parameters (can be an array) * @param string|array $values The value(s) to look for in the raw parameters (can be an array)
* @param mixed $default The default value to return if no result is found * @param string|bool|int|float|array|null $default The default value to return if no result is found
* @param bool $onlyParams Only check real parameters, skip those following an end of options (--) signal * @param bool $onlyParams Only check real parameters, skip those following an end of options (--) signal
* *
* @return mixed The option value * @return mixed The option value
*/ */
@ -76,7 +76,7 @@ interface InputInterface
/** /**
* Returns all the given arguments merged with the default values. * Returns all the given arguments merged with the default values.
* *
* @return array * @return array<string|bool|int|float|array|null>
*/ */
public function getArguments(); public function getArguments();
@ -113,7 +113,7 @@ interface InputInterface
/** /**
* Returns all the given options merged with the default values. * Returns all the given options merged with the default values.
* *
* @return array * @return array<string|bool|int|float|array|null>
*/ */
public function getOptions(); public function getOptions();

View File

@ -48,11 +48,9 @@ class InputOption
private $description; private $description;
/** /**
* @param string $name The option name * @param string|array|null $shortcut The shortcuts, can be null, a string of shortcuts delimited by | or an array of shortcuts
* @param string|array|null $shortcut The shortcuts, can be null, a string of shortcuts delimited by | or an array of shortcuts * @param int|null $mode The option mode: One of the VALUE_* constants
* @param int|null $mode The option mode: One of the VALUE_* constants * @param string|bool|int|float|array|null $default The default value (must be null for self::VALUE_NONE)
* @param string $description A description text
* @param mixed $default The default value (must be null for self::VALUE_NONE)
* *
* @throws InvalidArgumentException If option mode is invalid or incompatible * @throws InvalidArgumentException If option mode is invalid or incompatible
*/ */
@ -162,11 +160,7 @@ class InputOption
} }
/** /**
* Sets the default value. * @param string|bool|int|float|array|null $default
*
* @param mixed $default The default value
*
* @throws LogicException When incorrect default value is given
*/ */
public function setDefault($default = null) public function setDefault($default = null)
{ {
@ -188,7 +182,7 @@ class InputOption
/** /**
* Returns the default value. * Returns the default value.
* *
* @return mixed * @return string|bool|int|float|array|null
*/ */
public function getDefault() public function getDefault()
{ {

View File

@ -32,8 +32,8 @@ class Question
private $trimmable = true; private $trimmable = true;
/** /**
* @param string $question The question to ask to the user * @param string $question The question to ask to the user
* @param mixed $default The default answer to return if the user enters nothing * @param string|bool|int|float|null $default The default answer to return if the user enters nothing
*/ */
public function __construct(string $question, $default = null) public function __construct(string $question, $default = null)
{ {
@ -54,7 +54,7 @@ class Question
/** /**
* Returns the default answer. * Returns the default answer.
* *
* @return mixed * @return string|bool|int|float|null
*/ */
public function getDefault() public function getDefault()
{ {

View File

@ -109,7 +109,7 @@ class Container implements ResettableContainerInterface
* *
* @param string $name The parameter name * @param string $name The parameter name
* *
* @return mixed * @return array|bool|string|int|float|null
* *
* @throws InvalidArgumentException if the parameter is not defined * @throws InvalidArgumentException if the parameter is not defined
*/ */
@ -133,8 +133,8 @@ class Container implements ResettableContainerInterface
/** /**
* Sets a parameter. * Sets a parameter.
* *
* @param string $name The parameter name * @param string $name The parameter name
* @param mixed $value The parameter value * @param array|bool|string|int|float|null $value The parameter value
*/ */
public function setParameter($name, $value) public function setParameter($name, $value)
{ {

View File

@ -74,7 +74,7 @@ interface ContainerInterface extends PsrContainerInterface
* *
* @param string $name The parameter name * @param string $name The parameter name
* *
* @return mixed The parameter value * @return array|bool|string|int|float|null
* *
* @throws InvalidArgumentException if the parameter is not defined * @throws InvalidArgumentException if the parameter is not defined
*/ */
@ -92,8 +92,8 @@ interface ContainerInterface extends PsrContainerInterface
/** /**
* Sets a parameter. * Sets a parameter.
* *
* @param string $name The parameter name * @param string $name The parameter name
* @param mixed $value The parameter value * @param array|bool|string|int|float|null $value The parameter value
*/ */
public function setParameter($name, $value); public function setParameter($name, $value);
} }

View File

@ -36,7 +36,7 @@ class ContainerBag extends FrozenParameterBag implements ContainerBagInterface
/** /**
* {@inheritdoc} * {@inheritdoc}
* *
* @return mixed * @return array|bool|string|int|float|null
*/ */
public function get($name) public function get($name)
{ {

View File

@ -47,7 +47,7 @@ interface ParameterBagInterface
* *
* @param string $name The parameter name * @param string $name The parameter name
* *
* @return mixed The parameter value * @return array|bool|string|int|float|null
* *
* @throws ParameterNotFoundException if the parameter is not defined * @throws ParameterNotFoundException if the parameter is not defined
*/ */
@ -63,8 +63,8 @@ interface ParameterBagInterface
/** /**
* Sets a service container parameter. * Sets a service container parameter.
* *
* @param string $name The parameter name * @param string $name The parameter name
* @param mixed $value The parameter value * @param array|bool|string|int|float|null $value The parameter value
* *
* @throws LogicException if the parameter can not be set * @throws LogicException if the parameter can not be set
*/ */

View File

@ -47,7 +47,6 @@ use Symfony\Component\DependencyInjection\Tests\Fixtures\StubbedTranslator;
use Symfony\Component\DependencyInjection\Tests\Fixtures\TestDefinition1; use Symfony\Component\DependencyInjection\Tests\Fixtures\TestDefinition1;
use Symfony\Component\DependencyInjection\Tests\Fixtures\TestServiceSubscriber; use Symfony\Component\DependencyInjection\Tests\Fixtures\TestServiceSubscriber;
use Symfony\Component\DependencyInjection\TypedReference; use Symfony\Component\DependencyInjection\TypedReference;
use Symfony\Component\DependencyInjection\Variable;
use Symfony\Component\ExpressionLanguage\Expression; use Symfony\Component\ExpressionLanguage\Expression;
require_once __DIR__.'/../Fixtures/includes/autowiring_classes.php'; require_once __DIR__.'/../Fixtures/includes/autowiring_classes.php';
@ -164,28 +163,6 @@ class PhpDumperTest extends TestCase
$this->assertStringEqualsFile(self::$fixturesPath.'/php/custom_container_class_with_mandatory_constructor_arguments.php', $dumper->dump(['base_class' => 'ConstructorWithMandatoryArgumentsContainer', 'namespace' => 'Symfony\Component\DependencyInjection\Tests\Fixtures\Container'])); $this->assertStringEqualsFile(self::$fixturesPath.'/php/custom_container_class_with_mandatory_constructor_arguments.php', $dumper->dump(['base_class' => 'ConstructorWithMandatoryArgumentsContainer', 'namespace' => 'Symfony\Component\DependencyInjection\Tests\Fixtures\Container']));
} }
/**
* @dataProvider provideInvalidParameters
*/
public function testExportParameters($parameters)
{
$this->expectException(\InvalidArgumentException::class);
$container = new ContainerBuilder(new ParameterBag($parameters));
$container->compile();
$dumper = new PhpDumper($container);
$dumper->dump();
}
public function provideInvalidParameters()
{
return [
[['foo' => new Definition('stdClass')]],
[['foo' => new Expression('service("foo").foo() ~ (container.hasParameter("foo") ? parameter("foo") : "default")')]],
[['foo' => new Reference('foo')]],
[['foo' => new Variable('foo')]],
];
}
public function testAddParameters() public function testAddParameters()
{ {
$container = include self::$fixturesPath.'/containers/container8.php'; $container = include self::$fixturesPath.'/containers/container8.php';