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\Helper ;
use Symfony\Component\Console\Command\Command ;
2016-04-20 09:56:34 -07:00
use Symfony\Component\Console\Exception\InvalidArgumentException ;
2015-08-17 17:00:26 -07:00
/**
* HelperSet represents a set of helpers to be used with a command .
*
* @ author Fabien Potencier < fabien @ symfony . com >
*/
class HelperSet implements \IteratorAggregate
{
2017-02-02 16:28:38 -08:00
/**
* @ var Helper []
*/
2015-08-17 17:00:26 -07:00
private $helpers = array ();
private $command ;
/**
2017-02-02 16:28:38 -08:00
* @ param Helper [] $helpers An array of helper
2015-08-17 17:00:26 -07:00
*/
public function __construct ( array $helpers = array ())
{
foreach ( $helpers as $alias => $helper ) {
2018-11-23 12:29:20 +00:00
$this -> set ( $helper , \is_int ( $alias ) ? null : $alias );
2015-08-17 17:00:26 -07:00
}
}
/**
* Sets a helper .
*
* @ param HelperInterface $helper The helper instance
* @ param string $alias An alias
*/
public function set ( HelperInterface $helper , $alias = null )
{
$this -> helpers [ $helper -> getName ()] = $helper ;
if ( null !== $alias ) {
$this -> helpers [ $alias ] = $helper ;
}
$helper -> setHelperSet ( $this );
}
/**
* Returns true if the helper if defined .
*
* @ param string $name The helper name
*
* @ return bool true if the helper is defined , false otherwise
*/
public function has ( $name )
{
return isset ( $this -> helpers [ $name ]);
}
/**
* Gets a helper value .
*
* @ param string $name The helper name
*
* @ return HelperInterface The helper instance
*
2016-04-20 09:56:34 -07:00
* @ throws InvalidArgumentException if the helper is not defined
2015-08-17 17:00:26 -07:00
*/
public function get ( $name )
{
if ( ! $this -> has ( $name )) {
2016-04-20 09:56:34 -07:00
throw new InvalidArgumentException ( sprintf ( 'The helper "%s" is not defined.' , $name ));
2015-08-17 17:00:26 -07:00
}
return $this -> helpers [ $name ];
}
public function setCommand ( Command $command = null )
{
$this -> command = $command ;
}
/**
* Gets the command associated with this helper set .
*
* @ return Command A Command instance
*/
public function getCommand ()
{
return $this -> command ;
}
2017-02-02 16:28:38 -08:00
/**
* @ return Helper []
*/
2015-08-17 17:00:26 -07:00
public function getIterator ()
{
return new \ArrayIterator ( $this -> helpers );
}
}