Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
7 / 7
Application
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
3
100.00% covered (success)
100.00%
7 / 7
 addPlugin(array $listing)
100.00% covered (success)
100.00%
1 / 1
3
100.00% covered (success)
100.00%
7 / 7
<?php
/*
 * Mondrian
 */
namespace Trismegiste\Mondrian\Plugin;
use Symfony\Component\Console\Application as SymfoApp;
/**
 * Application is an symfony app with plugin capabilities
 */
class Application extends SymfoApp
{
    /**
     * Adds a list of subclasses of Command
     *
     * @param array $listing an array of fqcn symfony command
     */
    public function addPlugin(array $listing)
    {
        foreach ($listing as $cmd) {
            if (is_subclass_of($cmd, 'Symfony\Component\Console\Command\Command')) {
                $this->add(new $cmd());
            } else {
                throw new \InvalidArgumentException("$cmd is not a Symfony Command");
            }
        }
    }
}