NoteCat/src/Dependencies.php

48 lines
1.2 KiB
PHP
Raw Normal View History

2020-06-28 19:26:59 +02:00
<?php
declare(strict_types=1);
namespace NoteCat;
use DI\Container;
use Psr\Container\ContainerInterface;
2020-07-01 00:12:23 +02:00
use Slim\Views\Twig;
2020-06-28 19:26:59 +02:00
class Dependencies
{
2020-07-01 00:12:23 +02:00
private const TWIG = 'view';
private const TWIG_TEMPLATE_DIR = __DIR__ . '/../templates';
2020-06-28 19:26:59 +02:00
public static function createContainer(): Container
{
$container = new Container();
// App settings
$container->set(Settings::class, function (): Settings {
return new Settings();
});
// Twig template engine
$container->set(self::TWIG, function (ContainerInterface $c) {
/** @var Settings $settings */
$settings = $c->get(Settings::class);
return Twig::create(self::TWIG_TEMPLATE_DIR, $settings->getTwigSettings());
});
2020-06-28 19:26:59 +02:00
// Controllers
$container->set(HelloWorldController::class, function (ContainerInterface $c) {
return new HelloWorldController(
2020-07-01 00:12:23 +02:00
$c->get(self::TWIG),
2020-06-28 19:26:59 +02:00
$c->get(HelloWorld::class)
);
});
// Services
$container->set(HelloWorld::class, function () {
return new HelloWorld();
});
return $container;
}
}