1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
<?php
declare(strict_types=1);
namespace Doctrine\ORM\Tools\Console\Command;
use Doctrine\Deprecations\Deprecation;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\Tools\Console\EntityManagerProvider;
use Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use function assert;
abstract class AbstractEntityManagerCommand extends Command
{
/** @var EntityManagerProvider|null */
private $entityManagerProvider;
public function __construct(?EntityManagerProvider $entityManagerProvider = null)
{
parent::__construct();
$this->entityManagerProvider = $entityManagerProvider;
}
final protected function getEntityManager(InputInterface $input): EntityManagerInterface
{
// This is a backwards compatibility required check for commands extending Doctrine ORM commands
if (! $input->hasOption('em') || $this->entityManagerProvider === null) {
Deprecation::trigger(
'doctrine/orm',
'https://github.com/doctrine/orm/issues/8327',
'Not passing EntityManagerProvider as a dependency to command class "%s" is deprecated',
$this->getName()
);
$helper = $this->getHelper('em');
assert($helper instanceof EntityManagerHelper);
return $helper->getEntityManager();
}
return $input->getOption('em') === null
? $this->entityManagerProvider->getDefaultManager()
: $this->entityManagerProvider->getManager($input->getOption('em'));
}
}
|