Database.php 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. // Класс работы с БД
  3. namespace BotKit\Common;
  4. use Doctrine\DBAL\DriverManager;
  5. use Doctrine\DBAL\Tools\DsnParser;
  6. use Doctrine\ORM\EntityManager;
  7. use Doctrine\ORM\ORMSetup;
  8. class Database {
  9. private static $db;
  10. private $connection;
  11. private $entity_manager;
  12. private function __construct($dsn) {
  13. // Подключение к БД
  14. $dsnParser = new DsnParser();
  15. $connection_params = $dsnParser->parse($_ENV['dsn']);
  16. $this->connection = DriverManager::getConnection($connection_params);
  17. // Получение менеджера сущностей
  18. $config = ORMSetup::createAttributeMetadataConfiguration(
  19. paths: array(rootdir.'src/Entities'),
  20. isDevMode: true,
  21. );
  22. $this->entity_manager = new EntityManager($this->connection, $config);
  23. }
  24. // Инициализирует БД
  25. public static function init($dsn): void {
  26. self::$db = new Database($dsn);
  27. }
  28. // Возвращает ссылку на $connection
  29. public static function getConnection() {
  30. if (self::$db == null) {
  31. self::init($_ENV['dsn']);
  32. }
  33. return self::$db->connection;
  34. }
  35. // Возвращает ссылку на $entity_manager
  36. public static function getEM() {
  37. if (self::$db == null) {
  38. self::init($_ENV['dsn']);
  39. }
  40. return self::$db->entity_manager;
  41. }
  42. }