query('SELECT ...'); * Database::instance('reporting')->query(...); // отдельное подключение */ class Database { /** @var array Кэш подключений по имени */ protected static array $_instances = []; /** * Возвращает подключение по имени (кэшируется). * * @param string|null $name Имя подключения из конфига; null — 'default' * @return PdoDriver * @throws MyException Если подключение не описано в конфиге или драйвер неизвестен */ public static function instance(?string $name = null): PdoDriver { $name ??= 'default'; if (!isset(self::$_instances[$name])) { $config = Config::get('db', $name); if ($config === null) { throw new MyException('Подключение к БД не описано в конфиге: :name', [':name' => $name]); } if (($config['driver'] ?? null) !== 'pdo') { throw new MyException( 'Неизвестный драйвер БД: :driver', [':driver' => $config['driver'] ?? 'null'] ); } self::$_instances[$name] = new PdoDriver($config['connection'] ?? []); } return self::$_instances[$name]; } }