Add Doctrine Connection factory
[MAILPOET-2014]
This commit is contained in:
@ -91,6 +91,11 @@ class ContainerConfigurator implements IContainerConfigurator {
|
|||||||
$container->register(\MailPoet\Config\Renderer::class)
|
$container->register(\MailPoet\Config\Renderer::class)
|
||||||
->setPublic(true)
|
->setPublic(true)
|
||||||
->setFactory([new Reference(\MailPoet\Config\RendererFactory::class), 'getRenderer']);
|
->setFactory([new Reference(\MailPoet\Config\RendererFactory::class), 'getRenderer']);
|
||||||
|
// Doctrine
|
||||||
|
$container->autowire(\MailPoet\Doctrine\ConnectionFactory::class);
|
||||||
|
$container->autowire(\MailPoetVendor\Doctrine\DBAL\Connection::class)
|
||||||
|
->setFactory([new Reference(\MailPoet\Doctrine\ConnectionFactory::class), 'createConnection'])
|
||||||
|
->setPublic(true);
|
||||||
// Cron
|
// Cron
|
||||||
$container->autowire(\MailPoet\Cron\Daemon::class)->setPublic(true);
|
$container->autowire(\MailPoet\Cron\Daemon::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Cron\DaemonHttpRunner::class)->setPublic(true);
|
$container->autowire(\MailPoet\Cron\DaemonHttpRunner::class)->setPublic(true);
|
||||||
|
29
lib/Doctrine/ConnectionFactory.php
Normal file
29
lib/Doctrine/ConnectionFactory.php
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace MailPoet\Doctrine;
|
||||||
|
|
||||||
|
use MailPoet\Config\Env;
|
||||||
|
use MailPoetVendor\Doctrine\DBAL\Configuration;
|
||||||
|
use MailPoetVendor\Doctrine\DBAL\DriverManager;
|
||||||
|
use MailPoetVendor\Doctrine\DBAL\Platforms\MySqlPlatform;
|
||||||
|
|
||||||
|
class ConnectionFactory {
|
||||||
|
const DRIVER = 'pdo_mysql';
|
||||||
|
const PLATFORM_CLASS = MySqlPlatform::class;
|
||||||
|
|
||||||
|
function createConnection() {
|
||||||
|
$platform_class = self::PLATFORM_CLASS;
|
||||||
|
$connection_params = [
|
||||||
|
'driver' => self::DRIVER,
|
||||||
|
'platform' => new $platform_class,
|
||||||
|
'host' => Env::$db_host,
|
||||||
|
'port' => Env::$db_port,
|
||||||
|
'socket' => Env::$db_socket,
|
||||||
|
'user' => Env::$db_username,
|
||||||
|
'password' => Env::$db_password,
|
||||||
|
'charset' => Env::$db_charset,
|
||||||
|
'dbname' => Env::$db_name,
|
||||||
|
];
|
||||||
|
return DriverManager::getConnection($connection_params);
|
||||||
|
}
|
||||||
|
}
|
27
tests/integration/Doctrine/ConnectionFactoryTest.php
Normal file
27
tests/integration/Doctrine/ConnectionFactoryTest.php
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace MailPoet\Test\Config;
|
||||||
|
|
||||||
|
use MailPoet\Config\Env;
|
||||||
|
use MailPoet\Doctrine\ConnectionFactory;
|
||||||
|
use MailPoetVendor\Doctrine\DBAL\Driver\PDOMySql;
|
||||||
|
use MailPoetVendor\Doctrine\DBAL\Platforms\MySqlPlatform;
|
||||||
|
use PDO;
|
||||||
|
|
||||||
|
class ConnectionFactoryTest extends \MailPoetTest {
|
||||||
|
function testItSetsUpConnection() {
|
||||||
|
$connection_factory = new ConnectionFactory();
|
||||||
|
$connection = $connection_factory->createConnection();
|
||||||
|
|
||||||
|
expect($connection->getWrappedConnection())->isInstanceOf(PDO::class);
|
||||||
|
expect($connection->getDriver())->isInstanceOf(PDOMySql\Driver::class);
|
||||||
|
expect($connection->getDatabasePlatform())->isInstanceOf(MySqlPlatform::class);
|
||||||
|
expect($connection->getHost())->equals(Env::$db_host);
|
||||||
|
expect($connection->getPort())->equals(Env::$db_port);
|
||||||
|
expect($connection->getParams()['socket'])->equals(Env::$db_socket);
|
||||||
|
expect($connection->getUsername())->equals(Env::$db_username);
|
||||||
|
expect($connection->getPassword())->equals(Env::$db_password);
|
||||||
|
expect($connection->getParams()['charset'])->equals(Env::$db_charset);
|
||||||
|
expect($connection->getDatabase())->equals(Env::$db_name);
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user