Symfony, как использовать AutoWiring при циклическом просмотре подклассов - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть команда, которая обрабатывает некоторые данные и проходит через несколько «процессоров» для выполнения обработки.Код выглядит так:

class ProcessFilesCommand extends ContainerAwareCommand
{
    private $processorFactory;

    public function __construct(string $name = null, ProcessorFactory $processorFactory)
    {
        parent::__construct($name);
        $this->processorFactory = $processorFactory;

    }


    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $totalStart = microtime(true);

        while(microtime(true)-$totalStart <= 58) {

            if($lockUpload->acquire()) {
                $file = $em->getRepository( 'App:ImportedFile' )->findBy(
                    ['processed' => null],
                    ['created' => 'ASC']
                );
                if (sizeof( $file ) > 0) {
                    $file = $file[0];

                    $processorFound = false;
                    foreach ($this->processorFactory->getAvailableProcessors() as $processor) {
                        $start = microtime( true );
                        if ($this->processorFactory->getInstance( $processor )
                                            ->setOutput( $output )
                                            ->setContainer( $this->getContainer() )
                                            ->setDoctrine( $this->getContainer()->get( 'doctrine' ) )
                                            ->setImportedFile($file)
                                            ->process()
                            !== false
                        ) {

...

В моем цикле я должен назначить различные зависимости для моего процессора, некоторые из которых могут быть автоматически подключены.Как бы я использовал автопроводку в этом случае, так как имена моих классов не статичны, а в массиве.

Версия Symfony - 4.1

...