Судя по документации Доктрины, при настройки не используют классы а именно файлы bootstrap.php и cli-config.php что в дальнейшем не удобно вызывать require "bootstrap.php" для использования объекта $entityManager. Следовательно, решил преобразовать данные файлы в след. классы :
DoctrineBootstrap:
<?php
namespace App\Helpers\Doctrine;
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
use Dotenv\Dotenv;
class DoctrineBootstrap
{
private $isDevMode;
private $proxyDir;
private $cache;
private $useSimpleAnnotationReader;
protected EntityManager $entityManager;
/**
* @throws \Doctrine\ORM\ORMException
*/
public function __construct()
{
$this->entityManager = EntityManager::create($this->getConnection(), $this->getDoctrineConfig());
}
public function getDoctrineConfig()
{
$this->isDevMode = true;
$this->proxyDir = null;
$this->cache = null;
$this->useSimpleAnnotationReader = false;
return Setup::createAnnotationMetadataConfiguration(
array('src/Entity/'),
$this->isDevMode,
$this->proxyDir,
$this->cache,
$this->useSimpleAnnotationReader
);
}
public function getConnection(): array
{
$dotenv = Dotenv::createImmutable(__DIR__ . '/src');
$dotenv->load();
return [
'dbname' => $_ENV['DB_NAME'],
'user' => $_ENV['DB_USER'],
'password' => $_ENV['DB_PASSWORD'],
'host' => $_ENV['DB_HOST'],
'driver' => $_ENV['DB_DRIVER']
];
}
}
CliConfig:
<?php
namespace App\Helpers\Doctrine;
use Doctrine\ORM\Tools\Console\ConsoleRunner;
class CliConfig extends DoctrineBootstrap
{
public function __construct()
{
parent::__construct();
ConsoleRunner::createHelperSet($this->entityManager);
}
}
return new CliConfig();
При вызове CliConfig() по сути который должен срабатывать при работе с консолью то выводиться ошибка:
You are missing a "cli-config.php" or "config/cli-config.php" file in your
project, which is required to get the Doctrine Console working. You can use the
following sample as a template:
Возможно кто то реализовывал что то подобное используя классы вместо обычных файловых настроек?
Может кто помочь?
Благодарю.