-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathApplicationContainer.php
31 lines (25 loc) · 1.07 KB
/
ApplicationContainer.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
declare(strict_types=1);
namespace App\DI;
use App\API\Http\Provider\ApplicationControllerProvider;
use App\API\Http\Request\SymfonyHttpRequestInterceptor;
use App\Database\ApplicationDatabaseProvider;
use Phractico\Core\Infrastructure\Database\DatabaseProvider;
use Phractico\Core\Infrastructure\DI\Container;
use Phractico\Core\Infrastructure\DI\ContainerRegistry;
use Phractico\Core\Infrastructure\Http\ControllerProvider;
use Phractico\Core\Infrastructure\Http\Request\HttpRequestInterceptor;
use Psr\Container\ContainerInterface;
class ApplicationContainer
{
public static function resolve(): ContainerInterface
{
$container = Container::create();
$container->set(HttpRequestInterceptor::class, fn() => new SymfonyHttpRequestInterceptor());
$container->set(ControllerProvider::class, fn() => new ApplicationControllerProvider());
$container->set(DatabaseProvider::class, fn() => new ApplicationDatabaseProvider());
ContainerRegistry::clear();
ContainerRegistry::setContainer($container);
return $container;
}
}