Add MariaDB container; add PDO connection; add error middleware

This commit is contained in:
Lexi / Zoe 2021-07-26 23:14:14 +02:00
parent 114a67dbe4
commit 2bb7ea54a2
Signed by: binaryDiv
GPG key ID: F8D4956E224DA232
6 changed files with 76 additions and 9 deletions

View file

@ -5,14 +5,16 @@ namespace MailAccountAdmin;
use DI\Container;
use MailAccountAdmin\Login\LoginController;
use PDO;
use Psr\Container\ContainerInterface;
use Slim\Views\Twig;
class Dependencies
{
private const SETTINGS = 'settings';
private const TWIG = 'view';
public const SETTINGS = 'settings';
public const TWIG = 'view';
private const TWIG_TEMPLATE_DIR = __DIR__ . '/../templates';
public const DATABASE = 'database';
public static function createContainer(Settings $settings): Container
{
@ -29,6 +31,22 @@ class Dependencies
return Twig::create(self::TWIG_TEMPLATE_DIR, $settings->getTwigSettings());
});
// Database connection
$container->set(self::DATABASE, function (ContainerInterface $c) {
/** @var Settings $settings */
$settings = $c->get(self::SETTINGS);
$dbSettings = $settings->getDatabaseSettings();
return new PDO(
"mysql:dbname={$dbSettings['dbname']};host={$dbSettings['host']};port={$dbSettings['port']}",
$dbSettings['username'],
$dbSettings['password'],
[
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
],
);
});
// Login, registration, authentication
$container->set(LoginController::class, function (ContainerInterface $c) {
return new LoginController(