2015-08-17 17:00:26 -07: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 .
*/
namespace Symfony\Component\Console\Descriptor ;
use Symfony\Component\Console\Application ;
use Symfony\Component\Console\Command\Command ;
2018-11-23 12:29:20 +00:00
use Symfony\Component\Console\Exception\InvalidArgumentException ;
2015-08-17 17:00:26 -07:00
use Symfony\Component\Console\Input\InputArgument ;
use Symfony\Component\Console\Input\InputDefinition ;
use Symfony\Component\Console\Input\InputOption ;
use Symfony\Component\Console\Output\OutputInterface ;
/**
* @ author Jean - François Simon < jeanfrancois . simon @ sensiolabs . com >
*
* @ internal
*/
abstract class Descriptor implements DescriptorInterface
{
/**
* @ var OutputInterface
*/
2018-11-23 12:29:20 +00:00
protected $output ;
2015-08-17 17:00:26 -07:00
/**
* { @ inheritdoc }
*/
public function describe ( OutputInterface $output , $object , array $options = array ())
{
$this -> output = $output ;
switch ( true ) {
case $object instanceof InputArgument :
$this -> describeInputArgument ( $object , $options );
break ;
case $object instanceof InputOption :
$this -> describeInputOption ( $object , $options );
break ;
case $object instanceof InputDefinition :
$this -> describeInputDefinition ( $object , $options );
break ;
case $object instanceof Command :
$this -> describeCommand ( $object , $options );
break ;
case $object instanceof Application :
$this -> describeApplication ( $object , $options );
break ;
default :
2018-11-23 12:29:20 +00:00
throw new InvalidArgumentException ( sprintf ( 'Object of type "%s" is not describable.' , \get_class ( $object )));
2015-08-17 17:00:26 -07:00
}
}
/**
* Writes content to output .
*
* @ param string $content
* @ param bool $decorated
*/
protected function write ( $content , $decorated = false )
{
$this -> output -> write ( $content , false , $decorated ? OutputInterface :: OUTPUT_NORMAL : OutputInterface :: OUTPUT_RAW );
}
/**
* Describes an InputArgument instance .
*
* @ return string | mixed
*/
abstract protected function describeInputArgument ( InputArgument $argument , array $options = array ());
/**
* Describes an InputOption instance .
*
* @ return string | mixed
*/
abstract protected function describeInputOption ( InputOption $option , array $options = array ());
/**
* Describes an InputDefinition instance .
*
* @ return string | mixed
*/
abstract protected function describeInputDefinition ( InputDefinition $definition , array $options = array ());
/**
* Describes a Command instance .
*
* @ return string | mixed
*/
abstract protected function describeCommand ( Command $command , array $options = array ());
/**
* Describes an Application instance .
*
* @ return string | mixed
*/
abstract protected function describeApplication ( Application $application , array $options = array ());
}