Symfony 7.3 introduces powerful improvements to the Console component, beyond the much-anticipated invokable commands and input attributes. This version also brings new helpers and features designed to make console applications more capable.
Markdown Tables
The table helper lets you create complex tables with various structures and formats. In Symfony 7.3, we've introduced a new style for generating tables in Markdown format. This is useful, for example, when generating content for GitHub/GitLab issues, pull requests, CI messages, and more.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
use Symfony\Component\Console\Helper\Table;
// ...
$table = new Table($output);
$table
->setHeaders(['Version', 'Release Date', 'Is LTS?'])
->setRows([
['Symfony 7.0', 'November 2023', 'No'],
// ...
['...', '...', '...'],
])
;
$table->setStyle('markdown');
$table->render();
This outputs:
1 2 3 4 5 6 7
| Version | Release Date | Is LTS? |
|---------------|--------------------------|------------------|
| Symfony 7.0 | November 2023 | No |
| Symfony 7.1 | May 2024 | No |
| Symfony 7.2 | November 2024 | No |
| Symfony 7.3 | May 2025 | No |
| Symfony 7.4 | November 2025 | Yes |
Tree Helper
The Console component includes many helpers for rendering elements like progress bars and prompts, for controlling the cursor, etc. In Symfony 7.3, we've added a new helper for rendering tree-like structures.
This helper is typically used to render directory hierarchies but can handle any tree-like data:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
use Symfony\Component\Console\Helper\TreeHelper;
use Symfony\Component\Console\Style\SymfonyStyle;
// ...
$io = new SymfonyStyle($input, $output);
$tree = TreeHelper::createTree($io, null, [
'src' => [
'Command',
'Controller' => [
'DefaultController.php',
],
'Kernel.php',
],
'templates' => [
'base.html.twig',
],
]);
$tree->render();
This outputs:
1 2 3 4 5 6 7
├── src
│ ├── Command
│ ├── Controller
│ │ └── DefaultController.php
│ └── Kernel.php
└── templates
└── base.html.twig
If you don't know the tree elements beforehand, you can build the tree programmatically:
1 2 3 4 5 6 7
use Symfony\Component\Console\Helper\TreeNode;
// ...
$node = TreeNode::fromValues(['Command', 'Controller']);
// ...
$node->addChild('templates');
$node->addChild('tests');
The tree helper provides seven built-in styles (box, double, minimal, rounded, etc.) and lets you create your own tree style.