This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
symfony/src/Symfony/Component/Console
2011-11-03 21:17:38 +01:00
..
Command Revert "expanded namespaces within phpdoc (special for PhpStorm)" 2011-08-13 19:27:36 +02:00
Formatter removed whitespace 2011-06-23 22:03:13 +02:00
Helper fixed previous merge, done the same change to other occurences 2011-09-16 14:38:31 +02:00
Input [Console] refactored definition printer 2011-07-06 15:44:24 +03:00
Output [Console] added missing @api 2011-06-17 18:17:53 +02:00
Tester [Phpdoc] Cleaning/fixing 2011-04-23 15:18:47 +00:00
Application.php Fix console: list 'namespace' command display all available commands 2011-09-27 00:05:57 +02:00
composer.json [composer] add composer.json 2011-09-27 00:55:43 +02:00
LICENSE added LICENSE files for the subtree repositories 2011-02-22 18:58:15 +01:00
README.md fixed README for Console 2011-11-03 21:17:38 +01:00
Shell.php moved most protected to private in the Console component 2011-03-11 12:53:42 +01:00

Console Component

Even if we are talking about a web framework, having some tools to manage your project from the command line is nice. In Symfony2, we use the console to generate CRUDs, update the database schema, etc. It's not required, but it is really convenient and it can boost your productivity a lot.

This example shows how to create a command line tool very easily:

use Symfony\Component\Console\Application;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;

$console = new Application();
$console
    ->register('ls')
    ->setDefinition(array(
        new InputArgument('dir', InputArgument::REQUIRED, 'Directory name'),
    ))
    ->setDescription('Displays the files in the given directory')
    ->setCode(function (InputInterface $input, OutputInterface $output) {
        $dir = $input->getArgument('dir');

        $output->writeln(sprintf('Dir listing for <info>%s</info>', $dir));
    })
;

$console->run();

With only 10 lines of code or so, you have access to a lot of features like output coloring, input and output abstractions (so that you can easily unit-test your commands), validation, automatic help messages, and a lot more. It's really powerful.

Resources

Unit tests:

https://github.com/symfony/symfony/tree/master/tests/Symfony/Tests/Component/Console