Conversation

yceruto

Closes #20553

  • Make invokable commands first-class citizen
  • Move old command definition to a separate section

Pending docs to be updated:

  • components/console/console_arguments.rst (full refactoring required)
  • components/console/helpers/questionhelper.rst (full refactoring required)
  • console/input.rst (full refactoring required)
  • console.rst

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the harmonization of some command names 👍

#[AsCommand(name: 'app:create-user')]
class CreateUserCommand
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe we should make all these changes with the #AsCommand attribute in a separate PR to avoid growing this PR?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I’d actually prefer to keep all these related changes in a single PR, since they’re closely tied together. It helps keep the context in one place and makes it easier to review everything as a whole.

In any case, we can go ahead and merge this one, then open a new PR for the remaining updates.

@yceruto

Thanks @alamirault and @OskarStark for your review 🙏

I’m actively looking for someone to help me refactor console.rst, as I’m running out of free-time before the final release.

@94noni

Pending docs to be updated:

I would also add https://symfony.com/doc/current/console/input.html, wdyt @yceruto ?
I can help on this in a separate unitary PR if its ok

@yceruto

Thanks, Antoine! Sure, go for it.

Here we're discussing input related topics symfony/symfony#59602

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yonel, thanks a lot for this massive contribution 🙇

I agree with what you said here:

we can go ahead and merge this one, then open a new PR for the remaining updates

I'll wait a bit to read more opinions, but that's the plan I'd like to follow. Thanks!

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree with doing the work in steps, but I think the order should be swapped around.

We can't update all examples across the documentation to use features that we didn't document properly in my opinion. This applies in particular to console/input.rst, which has to be updated before we can start using #[Option]/#[Argument] in the documentation.
But it would be perfectly fine if all articles in the docs still have outdated (too complex) examples, but the main guides are updated to document both the simple + advanced way.

We must also be careful about updating an example without updating the context it is placed in (I tried to comment on those cases whenever I saw this).

@yceruto

Thanks @wouterj, @94noni, and @javiereguiluz for your feedback! I will try to address it ASAP

@ycerutoyceruto force-pushed the invokable_command branch 5 times, most recently from 8b39fe4 to f638390 Compare May 28, 2025 21:50
@ycerutoyceruto force-pushed the invokable_command branch 2 times, most recently from 2248692 to fd23b35 Compare May 28, 2025 21:57
@ycerutoyceruto force-pushed the invokable_command branch from fd23b35 to 585684e Compare May 28, 2025 22:07
@yceruto

FYI, console.rst file is ready for review.

Working on console/input.rst...

@@ -472,7 +412,7 @@ command:
Note that it will not be called when the command is run without interaction
(e.g. when passing the ``--no-interaction`` global option flag).

:method:`Symfony\\Component\\Console\\Command\\Command::execute` *(required)*
``__invoke()`` *(required)*
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

execute is still in Lifecycle I think

Suggested change
``__invoke()`` *(required)*
``__invoke()`` and :method:`Symfony\\Component\\Console\\Command\\Command::execute` *(required)*

What do you think ?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe with or instead of and

@OskarStark

open to finish this PR @yceruto ? 🙏

@yceruto

No time to finish this soon :( sorry, looking for help to finish the remaining docs 🙏

Sign up for free to join this conversation on . Already have an account? Sign in to comment
None yet

Successfully merging this pull request may close these issues.

[Console] Add support for invokable commands and input attributes