source: pro-violet-viettel/sourcecode/application/libraries/Doctrine/Symfony/Component/Console/Tester/CommandTester.php @ 345

Last change on this file since 345 was 345, checked in by quyenla, 11 years ago

collaborator page

File size: 2.5 KB
Line 
1<?php
2
3/*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12namespace Symfony\Component\Console\Tester;
13
14use Symfony\Component\Console\Command\Command;
15use Symfony\Component\Console\Input\ArrayInput;
16use Symfony\Component\Console\Output\StreamOutput;
17
18/**
19 * @author Fabien Potencier <fabien@symfony.com>
20 */
21class CommandTester
22{
23    private $command;
24    private $input;
25    private $output;
26
27    /**
28     * Constructor.
29     *
30     * @param Command $command A Command instance to test.
31     */
32    public function __construct(Command $command)
33    {
34        $this->command = $command;
35    }
36
37    /**
38     * Executes the command.
39     *
40     * Available options:
41     *
42     *  * interactive: Sets the input interactive flag
43     *  * decorated:   Sets the output decorated flag
44     *  * verbosity:   Sets the output verbosity flag
45     *
46     * @param array $input   An array of arguments and options
47     * @param array $options An array of options
48     *
49     * @return integer The command exit code
50     */
51    public function execute(array $input, array $options = array())
52    {
53        $this->inputs = new ArrayInput($input);
54        if (isset($options['interactive'])) {
55            $this->inputs->setInteractive($options['interactive']);
56        }
57
58        $this->output = new StreamOutput(fopen('php://memory', 'w', false));
59        if (isset($options['decorated'])) {
60            $this->output->setDecorated($options['decorated']);
61        }
62        if (isset($options['verbosity'])) {
63            $this->output->setVerbosity($options['verbosity']);
64        }
65
66        return $this->command->run($this->inputs, $this->output);
67    }
68
69    /**
70     * Gets the display returned by the last execution of the command.
71     *
72     * @return string The display
73     */
74    public function getDisplay()
75    {
76        rewind($this->output->getStream());
77
78        return stream_get_contents($this->output->getStream());
79    }
80
81    /**
82     * Gets the input instance used by the last execution of the command.
83     *
84     * @return InputInterface The current input instance
85     */
86    public function getInput()
87    {
88        return $this->inputs;
89    }
90
91    /**
92     * Gets the output instance used by the last execution of the command.
93     *
94     * @return OutputInterface The current output instance
95     */
96    public function getOutput()
97    {
98        return $this->output;
99    }
100}
Note: See TracBrowser for help on using the repository browser.