[Console] Fix setting aliases & hidden via name

This commit is contained in:
HypeMC
2025-06-07 17:59:31 +02:00
parent aa64416f1d
commit 5e7cd96684
3 changed files with 21 additions and 3 deletions

View File

@@ -1,6 +1,11 @@
CHANGELOG
=========
7.4
---
* Allow setting aliases and the hidden flag via the command name passed to the constructor
7.3
---

View File

@@ -97,13 +97,13 @@ class Command implements SignalableCommandInterface
if (self::class !== (new \ReflectionMethod($this, 'getDefaultName'))->class) {
trigger_deprecation('symfony/console', '7.3', 'Overriding "Command::getDefaultName()" in "%s" is deprecated and will be removed in Symfony 8.0, use the #[AsCommand] attribute instead.', static::class);
$defaultName = static::getDefaultName();
$name = static::getDefaultName();
} else {
$defaultName = $attribute?->name;
$name = $attribute?->name;
}
}
if (null === $name && null !== $name = $defaultName) {
if (null !== $name) {
$aliases = explode('|', $name);
if ('' === $name = array_shift($aliases)) {

View File

@@ -205,6 +205,19 @@ class CommandTest extends TestCase
$this->assertEquals(['name1'], $command->getAliases(), '->setAliases() sets the aliases');
}
/**
* @testWith ["name|alias1|alias2", "name", ["alias1", "alias2"], false]
* ["|alias1|alias2", "alias1", ["alias2"], true]
*/
public function testSetAliasesAndHiddenViaName(string $name, string $expectedName, array $expectedAliases, bool $expectedHidden)
{
$command = new Command($name);
self::assertSame($expectedName, $command->getName());
self::assertSame($expectedHidden, $command->isHidden());
self::assertSame($expectedAliases, $command->getAliases());
}
public function testGetSynopsis()
{
$command = new \TestCommand();