The upcoming release of Symfony, 7.3, introduces invokable commands.

For me this is exciting news because more and more I believe that if a class has a single public function it should be an invokable class.
I think it reduces naming things. Now there is a lot of code that uses method names like execute or handle as the single entry point for the class.
Another reason is that with an invokable class there can't be a misunderstanding what the method is that is going to be executed.

While I was doing research how this could affect Laravel commands, which are an extension of the Symfony commands, I found out it already was possible to use __invoke, but in the documentation and using artisan make:command the handle method is the default.

Together with the invokable commands the CLI arguments and options can now be method arguments.

// before
class CreateUserCommand extends Command
{
    protected function configure(): void
    {
        $this->addArgument('name', InputArgument::REQUIRED);
        $this->addOption('activate', null, InputOption::VALUE_NONE);
    }
}
// after
class CreateUserCommand
{
    public function __invoke(
        SymfonyStyle $io, 
        #[Argument] string $name, 
        #[Option] bool $activate = false,
    ): int
    { // code here }
}

Next to removing the need for the configure method, it also means no more $name = $input->getArgument('name'); lines.

I never liked the Laravel command signature property because it is text that gets parsed to the configure method content and the name property.
This violates the single responsibility principle.

So for me Symfony 7.3 is already a release I'm wanting to use.
I'm wondering when Laravel is going to move to the new functionality. I think the CLI arguments and options are too big of a code reduction to ignore for long.