/
ConsoleProvider.php
97 lines (85 loc) · 3.1 KB
/
ConsoleProvider.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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php
declare(strict_types=1);
namespace Windwalker\Core\Provider;
use Psr\Http\Message\ServerRequestInterface;
use Windwalker\Core\Application\AppContext;
use Windwalker\Core\Application\Context\AppContextInterface;
use Windwalker\Core\Application\Context\AppRequestInterface;
use Windwalker\Core\Console\ConsoleApplication;
use Windwalker\Core\Http\AppRequest;
use Windwalker\Core\Http\Browser;
use Windwalker\Core\Http\ProxyResolver;
use Windwalker\Core\Http\RequestInspector;
use Windwalker\Core\Router\Navigator;
use Windwalker\Core\Router\SystemUri;
use Windwalker\Core\Security\CspNonceService;
use Windwalker\Core\State\AppState;
use Windwalker\DI\Container;
use Windwalker\DI\Exception\DefinitionException;
use Windwalker\DI\ServiceProviderInterface;
use Windwalker\Http\Request\ServerRequest;
/**
* The ConsoleProvider class.
*/
class ConsoleProvider implements ServiceProviderInterface
{
/**
* ConsoleProvider constructor.
*
* @param ConsoleApplication $app
*/
public function __construct(protected ConsoleApplication $app)
{
}
/**
* @inheritDoc
*/
public function register(Container $container): void
{
if (ConsoleApplication::class !== $this->app::class) {
$container->alias(ConsoleApplication::class, $this->app::class);
}
$container->mergeParameters(
'commands',
require __DIR__ . '/../../../resources/registry/commands.php'
);
$container->mergeParameters(
'generator.commands',
require __DIR__ . '/../../../resources/registry/generator.php'
);
$this->registerEmptyWebServices($container);
}
/**
* Prepare some empty web services to make sure other services which depends on these will not error in CLI mode.
*
* If you call $app->prepareWebSimulator(), they will be override.
*
* @param Container $container
*
* @return void
*
* @throws DefinitionException
*/
protected function registerEmptyWebServices(Container $container): void
{
$container->prepareSharedObject(ServerRequest::class)
->alias(ServerRequestInterface::class, ServerRequest::class);
$container->prepareSharedObject(SystemUri::class);
$container->prepareSharedObject(ProxyResolver::class);
$container->prepareSharedObject(Browser::class);
$container->prepareSharedObject(CspNonceService::class);
$container->prepareSharedObject(AppState::class);
$container->prepareSharedObject(RequestInspector::class);
$container->prepareSharedObject(
AppContext::class,
fn(AppContext $app, Container $container) => $app->setAppRequest(WebProvider::createAppRequest($container))
)
->alias(AppContextInterface::class, AppContext::class);
$container->share(
AppRequest::class,
fn (Container $container) => $container->get(AppContext::class)->getAppRequest()
)
->alias(AppRequestInterface::class, AppRequest::class);
$container->prepareSharedObject(Navigator::class);
}
}