У меня есть команда, которая обрабатывает некоторые данные и проходит через несколько «процессоров» для выполнения обработки.Код выглядит так:
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