Passed
Push — main ( 85e465...8599f1 )
by Thierry
03:59
created

ServicesTrait::callback()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
c 0
b 0
f 0
nc 1
nop 0
dl 0
loc 3
rs 10
1
<?php
2
3
/**
4
 * ServicesTrait.php
5
 *
6
 * Access to the services registered in the container.
7
 *
8
 * @package jaxon-core
9
 * @copyright 2025 Thierry Feuzeu <[email protected]>
10
 * @license https://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License
11
 * @link https://github.com/jaxon-php/jaxon-core
12
 */
13
14
namespace Jaxon\App\Ajax\Traits;
15
16
use Jaxon\App\Ajax\Bootstrap;
17
use Jaxon\App\Config\ConfigManager;
18
use Jaxon\App\I18n\Translator;
19
use Jaxon\App\Session\SessionInterface;
20
use Jaxon\App\View\ViewRenderer;
21
use Jaxon\Plugin\Code\CodeGenerator;
22
use Jaxon\Plugin\Manager\PackageManager;
23
use Jaxon\Plugin\Manager\PluginManager;
24
use Jaxon\Request\Handler\CallbackManager;
25
use Jaxon\Request\Handler\RequestHandler;
26
use Jaxon\Request\Handler\Psr\PsrFactory;
27
use Jaxon\Request\Upload\UploadHandlerInterface;
28
use Jaxon\Response\Manager\ResponseManager;
29
use Jaxon\Utils\Template\TemplateEngine;
30
use Psr\Log\LoggerInterface;
31
use Closure;
32
33
trait ServicesTrait
34
{
35
    use DiTrait;
36
37
    /**
38
     * @return ConfigManager
39
     */
40
    public function config(): ConfigManager
41
    {
42
        return $this->xContainer->config();
43
    }
44
45
    /**
46
     * @return Translator
47
     */
48
    public function translator(): Translator
49
    {
50
        return $this->di()->g(Translator::class);
51
    }
52
53
    /**
54
     * @return LoggerInterface
55
     */
56
    public function logger(): LoggerInterface
57
    {
58
        return $this->di()->getLogger();
59
    }
60
61
    /**
62
     * @return Bootstrap
63
     */
64
    protected function getBootstrap(): Bootstrap
65
    {
66
        return $this->di()->getBootstrap();
67
    }
68
69
    /**
70
     * @return PluginManager
71
     */
72
    protected function getPluginManager(): PluginManager
73
    {
74
        return $this->di()->getPluginManager();
75
    }
76
77
    /**
78
     * @return RequestHandler
79
     */
80
    protected function getRequestHandler(): RequestHandler
81
    {
82
        return $this->di()->getRequestHandler();
83
    }
84
85
    /**
86
     * @return ResponseManager
87
     */
88
    protected function getResponseManager(): ResponseManager
89
    {
90
        return $this->di()->getResponseManager();
91
    }
92
93
    /**
94
     * @return PackageManager
95
     */
96
    protected function getPackageManager(): PackageManager
97
    {
98
        return $this->di()->getPackageManager();
99
    }
100
101
    /**
102
     * @return CodeGenerator
103
     */
104
    protected function getCodeGenerator(): CodeGenerator
105
    {
106
        return $this->di()->getCodeGenerator();
107
    }
108
109
    /**
110
     * Add a view renderer with an id
111
     *
112
     * @param string $sRenderer    The renderer name
113
     * @param string $sExtension    The extension to append to template names
114
     * @param Closure $xClosure    A closure to create the view instance
115
     *
116
     * @return void
117
     */
118
    public function addViewRenderer(string $sRenderer, string $sExtension, Closure $xClosure): void
119
    {
120
        $this->view()->setDefaultRenderer($sRenderer, $sExtension, $xClosure);
121
    }
122
123
    /**
124
     * @param LoggerInterface|Closure $xLogger
125
     *
126
     * @return void
127
     */
128
    public function setLogger(LoggerInterface|Closure $xLogger): void
129
    {
130
        $this->di()->setLogger($xLogger);
131
    }
132
133
    /**
134
     * Set the session manager
135
     *
136
     * @param Closure $xClosure    A closure to create the session manager instance
137
     *
138
     * @return void
139
     */
140
    public function setSessionManager(Closure $xClosure): void
141
    {
142
        $this->di()->setSessionManager($xClosure);
143
    }
144
145
    /**
146
     * @return SessionInterface|null
147
     */
148
    public function session(): ?SessionInterface
149
    {
150
        return $this->di()->getSessionManager();
151
    }
152
153
    /**
154
     * @return UploadHandlerInterface|null
155
     */
156
    public function upload(): ?UploadHandlerInterface
157
    {
158
        return $this->di()->getUploadHandler();
159
    }
160
161
    /**
162
     * @return PsrFactory
163
     */
164
    public function psr(): PsrFactory
165
    {
166
        return $this->di()->getPsrFactory();
167
    }
168
169
    /**
170
     * Get the template engine
171
     *
172
     * @return TemplateEngine
173
     */
174
    public function template(): TemplateEngine
175
    {
176
        return $this->di()->getTemplateEngine();
177
    }
178
179
    /**
180
     * Get the view renderer
181
     *
182
     * @return ViewRenderer
183
     */
184
    public function view(): ViewRenderer
185
    {
186
        return $this->di()->getViewRenderer();
187
    }
188
189
    /**
190
     * Get the callback manager
191
     *
192
     * @return CallbackManager
193
     */
194
    public function callback(): CallbackManager
195
    {
196
        return $this->xContainer->callback();
197
    }
198
}
199