baleen/src/dependencies.php

62 lines
1.6 KiB
PHP
Raw Normal View History

2024-08-30 12:28:30 +00:00
<?php declare(strict_types=1);
use DI\Container;
use Doctrine\DBAL\DriverManager;
use Doctrine\DBAL\Tools\DsnParser;
2024-08-30 12:28:30 +00:00
use Doctrine\DBAL\Types\Type;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\ORMSetup;
use Lewisdale\App\Logging\FileLogger;
2024-09-20 12:22:05 +00:00
use Lewisdale\App\Models\Types\XMLElement;
2024-08-30 12:28:30 +00:00
use Lewisdale\App\TwigExtensions\CsrfExtension;
use Psr\Log\LoggerInterface;
use Ramsey\Uuid\Doctrine\UuidType;
use Slim\Factory\AppFactory;
use Slim\Views\Twig;
require_once __DIR__ . "/../vendor/autoload.php";
$container = new Container();
AppFactory::setContainer($container);
$app = AppFactory::create();
$container->set('csrf', function() use ($app) {
return new Slim\Csrf\Guard($app->getResponseFactory());
});
$container->set('view', function() use ($container) {
$twig = Twig::create(__DIR__ . "/../views");
$twig->addExtension(new CsrfExtension($container->get('csrf')));
return $twig;
});
$container->set(Twig::class, function() use ($container) {
return $container->get('view');
});
$container->set(LoggerInterface::class, $container->get(FileLogger::class));
$container->set(EntityManager::class, static function() {
Type::addType('uuid', UuidType::class);
2024-09-20 12:22:05 +00:00
Type::addType(XMLElement::NAME, XMLElement::class);
2024-08-30 12:28:30 +00:00
$config = ORMSetup::createAttributeMetadataConfiguration(
paths: array(__DIR__."/Models/Data"),
isDevMode: true,
);
$dsnParser = new DsnParser();
$params = $dsnParser->parse($_ENV["DB_CONNECTION"]);
$connection = DriverManager::getConnection($params, $config);
2024-08-30 12:28:30 +00:00
2024-09-20 12:22:05 +00:00
$connection->executeQuery("PRAGMA foreign_keys = ON");
2024-08-30 12:28:30 +00:00
return new EntityManager($connection, $config);
});