baleen/src/dependencies.php

57 lines
1.4 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\Types\Type;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\ORMSetup;
use Lewisdale\App\Logging\FileLogger;
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);
$config = ORMSetup::createAttributeMetadataConfiguration(
paths: array(__DIR__."/Models/Data"),
isDevMode: true,
);
$connection = DriverManager::getConnection([
'driver' => 'pdo_sqlite',
2024-09-17 20:52:08 +00:00
'path' => __DIR__ . '/../' . getenv("SQLITE_DB_NAME"),
2024-08-30 12:28:30 +00:00
], $config);
return new EntityManager($connection, $config);
});