Пример класса некой команды:
<?php
namespace AppBundle\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class NewCommand extends Command
{
protected function configure()
{
$this
->setName('new-command')
->setDescription('Creates a new user.')
->setHelp('This command allows you to create a user...');
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$output->writeln('New command');
}
}
Как Symfony находит этот класс и регистрирует его как консольную команду? Ведь при автолоадинге невозможно определить какие классы наследуются от базового (в данном случае, класса Command).
Что бы оно работало, надо зарегистрировать команду в bin/console смотри документацию https://symfony.com/doc/3.4/components/console.html
#!/usr/bin/env php
<?php
// application.php
require __DIR__.'/vendor/autoload.php';
use Symfony\Component\Console\Application;
$application = new Application();
// ... register commands
$application->add(new \AppBundle\Command\NewCommand());
$application->run();
Вот так оно его и находит
Сборка персонального компьютера от Artline: умный выбор для современных пользователей