12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- <?php
- declare(strict_types=1);
- namespace Doctrine\Migrations\Configuration\Connection;
- use Doctrine\DBAL\Connection;
- use Doctrine\DBAL\DriverManager;
- use Doctrine\Migrations\Configuration\Connection\Exception\FileNotFound;
- use Doctrine\Migrations\Configuration\Connection\Exception\InvalidConfiguration;
- use InvalidArgumentException;
- use function file_exists;
- use function is_array;
- /**
- * This class will return a Connection instance, loaded from a configuration file provided as argument.
- */
- final class ConfigurationFile implements ConnectionLoader
- {
- /** @var string */
- private $filename;
- public function __construct(string $filename)
- {
- $this->filename = $filename;
- }
- public function getConnection(?string $name = null): Connection
- {
- if ($name !== null) {
- throw new InvalidArgumentException('Only one connection is supported');
- }
- if (! file_exists($this->filename)) {
- throw FileNotFound::new($this->filename);
- }
- $params = include $this->filename;
- if ($params instanceof Connection) {
- return $params;
- }
- if ($params instanceof ConnectionLoader) {
- return $params->getConnection();
- }
- if (is_array($params)) {
- return DriverManager::getConnection($params);
- }
- throw InvalidConfiguration::invalidArrayConfiguration();
- }
- }
|