You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feature #14431 [Console] Bind the closure (code) to the Command if possible (lyrixx)
This PR was merged into the 2.8 branch.
Discussion
----------
[Console] Bind the closure (code) to the Command if possible
| Q | A
| ------------- | ---
| Bug fix? | no
| New feature? | yes
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | ~
| License | MIT
| Doc PR | ~
This allow this kind of code:
```php
#!/usr/bin/env php
<?php
require __DIR__.'/vendor/autoload.php';
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
$application = new Application();
$application->add((new Command('process')))
->setDescription('Play all other commands')
->setCode(function (InputInterface $input, OutputInterface $output) use ($application) {
$application = $this->getApplication();
$help = $application->find('help');
$output->writeln($help->getHelp());
})
;
$application->run();
```
Commits
-------
ff4424a [Console] Bind the closure (code) to the Command if possible
@@ -346,3 +373,13 @@ public function testLegacyAsXml()
346
373
$this->assertXmlStringEqualsXmlFile(self::$fixturesPath.'/command_asxml.txt', $command->asXml(), '->asXml() returns an XML representation of the command');
347
374
}
348
375
}
376
+
377
+
// In order to get an unbound closure, we should create it outside a class
0 commit comments