2021-05-10 00:23:30 +00:00
< ? 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 .
*/
2021-09-05 00:27:40 +00:00
namespace RectorPrefix20210905\Symfony\Component\Console\Input ;
2021-05-10 00:23:30 +00:00
2021-09-05 00:27:40 +00:00
use RectorPrefix20210905\Symfony\Component\Console\Exception\InvalidArgumentException ;
use RectorPrefix20210905\Symfony\Component\Console\Exception\LogicException ;
2021-05-10 00:23:30 +00:00
/**
* Represents a command line argument .
*
* @ author Fabien Potencier < fabien @ symfony . com >
*/
class InputArgument
{
public const REQUIRED = 1 ;
public const OPTIONAL = 2 ;
public const IS_ARRAY = 4 ;
private $name ;
private $mode ;
private $default ;
private $description ;
/**
2021-07-05 15:06:41 +00:00
* @ param string $name The argument name
* @ param int | null $mode The argument mode : self :: REQUIRED or self :: OPTIONAL
* @ param string $description A description text
* @ param string | bool | int | float | array | null $default The default value ( for self :: OPTIONAL mode only )
2021-05-10 00:23:30 +00:00
*
* @ throws InvalidArgumentException When argument mode is not valid
*/
public function __construct ( string $name , int $mode = null , string $description = '' , $default = null )
{
if ( null === $mode ) {
$mode = self :: OPTIONAL ;
} elseif ( $mode > 7 || $mode < 1 ) {
2021-09-05 00:27:40 +00:00
throw new \RectorPrefix20210905\Symfony\Component\Console\Exception\InvalidArgumentException ( \sprintf ( 'Argument mode "%s" is not valid.' , $mode ));
2021-05-10 00:23:30 +00:00
}
$this -> name = $name ;
$this -> mode = $mode ;
$this -> description = $description ;
$this -> setDefault ( $default );
}
/**
* Returns the argument name .
*
* @ return string The argument name
*/
public function getName ()
{
return $this -> name ;
}
/**
* Returns true if the argument is required .
*
* @ return bool true if parameter mode is self :: REQUIRED , false otherwise
*/
public function isRequired ()
{
return self :: REQUIRED === ( self :: REQUIRED & $this -> mode );
}
/**
* Returns true if the argument can take multiple values .
*
* @ return bool true if mode is self :: IS_ARRAY , false otherwise
*/
public function isArray ()
{
return self :: IS_ARRAY === ( self :: IS_ARRAY & $this -> mode );
}
/**
* Sets the default value .
*
2021-07-05 15:06:41 +00:00
* @ param string | bool | int | float | array | null $default
2021-05-10 00:23:30 +00:00
*
* @ throws LogicException When incorrect default value is given
*/
public function setDefault ( $default = null )
{
if ( self :: REQUIRED === $this -> mode && null !== $default ) {
2021-09-05 00:27:40 +00:00
throw new \RectorPrefix20210905\Symfony\Component\Console\Exception\LogicException ( 'Cannot set a default value except for InputArgument::OPTIONAL mode.' );
2021-05-10 00:23:30 +00:00
}
if ( $this -> isArray ()) {
if ( null === $default ) {
$default = [];
} elseif ( ! \is_array ( $default )) {
2021-09-05 00:27:40 +00:00
throw new \RectorPrefix20210905\Symfony\Component\Console\Exception\LogicException ( 'A default value for an array argument must be an array.' );
2021-05-10 00:23:30 +00:00
}
}
$this -> default = $default ;
}
/**
* Returns the default value .
*
2021-07-05 15:06:41 +00:00
* @ return string | bool | int | float | array | null
2021-05-10 00:23:30 +00:00
*/
public function getDefault ()
{
return $this -> default ;
}
/**
* Returns the description text .
*
* @ return string The description text
*/
public function getDescription ()
{
return $this -> description ;
}
}