Passed
Push — main ( 5ca287...d84479 )
by Thierry
05:24
created

ServicesTrait::getCallbackManager()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
rs 10
c 2
b 0
f 0
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\I18n\Translator;
18
use Jaxon\App\Session\SessionInterface;
19
use Jaxon\App\View\ViewRenderer;
20
use Jaxon\Plugin\Code\CodeGenerator;
21
use Jaxon\Plugin\Manager\PackageManager;
22
use Jaxon\Plugin\Manager\PluginManager;
23
use Jaxon\Request\Handler\CallbackManager;
24
use Jaxon\Request\Handler\RequestHandler;
25
use Jaxon\Request\Handler\Psr\PsrFactory;
26
use Jaxon\Request\Upload\UploadHandlerInterface;
27
use Jaxon\Response\Manager\ResponseManager;
28
use Jaxon\Utils\Template\TemplateEngine;
29
use Psr\Log\LoggerInterface;
30
use Closure;
31
32
trait ServicesTrait
33
{
34
    use DiTrait;
35
36
    /**
37
     * @return Translator
38
     */
39
    public function translator(): Translator
40
    {
41
        return $this->di()->g(Translator::class);
42
    }
43
44
    /**
45
     * @return LoggerInterface
46
     */
47
    public function logger(): LoggerInterface
48
    {
49
        return $this->di()->getLogger();
50
    }
51
52
    /**
53
     * @return Bootstrap
54
     */
55
    protected function getBootstrap(): Bootstrap
56
    {
57
        return $this->di()->getBootstrap();
58
    }
59
60
    /**
61
     * @return PluginManager
62
     */
63
    protected function getPluginManager(): PluginManager
64
    {
65
        return $this->di()->getPluginManager();
66
    }
67
68
    /**
69
     * @return RequestHandler
70
     */
71
    protected function getRequestHandler(): RequestHandler
72
    {
73
        return $this->di()->getRequestHandler();
74
    }
75
76
    /**
77
     * @return ResponseManager
78
     */
79
    protected function getResponseManager(): ResponseManager
80
    {
81
        return $this->di()->getResponseManager();
82
    }
83
84
    /**
85
     * @return PackageManager
86
     */
87
    protected function getPackageManager(): PackageManager
88
    {
89
        return $this->di()->getPackageManager();
90
    }
91
92
    /**
93
     * @return CodeGenerator
94
     */
95
    protected function getCodeGenerator(): CodeGenerator
96
    {
97
        return $this->di()->getCodeGenerator();
98
    }
99
100
    /**
101
     * Add a view renderer with an id
102
     *
103
     * @param string $sRenderer    The renderer name
104
     * @param string $sExtension    The extension to append to template names
105
     * @param Closure $xClosure    A closure to create the view instance
106
     *
107
     * @return void
108
     */
109
    public function addViewRenderer(string $sRenderer, string $sExtension, Closure $xClosure): void
110
    {
111
        $this->view()->setDefaultRenderer($sRenderer, $sExtension, $xClosure);
112
    }
113
114
    /**
115
     * @param LoggerInterface|Closure $xLogger
116
     *
117
     * @return void
118
     */
119
    public function setLogger(LoggerInterface|Closure $xLogger): void
120
    {
121
        $this->di()->setLogger($xLogger);
122
    }
123
124
    /**
125
     * Set the session manager
126
     *
127
     * @param Closure $xClosure    A closure to create the session manager instance
128
     *
129
     * @return void
130
     */
131
    public function setSessionManager(Closure $xClosure): void
132
    {
133
        $this->di()->setSessionManager($xClosure);
134
    }
135
136
    /**
137
     * @return UploadHandlerInterface|null
138
     */
139
    public function upload(): ?UploadHandlerInterface
140
    {
141
        return $this->di()->getUploadHandler();
142
    }
143
144
    /**
145
     * @return PsrFactory
146
     */
147
    public function psr(): PsrFactory
148
    {
149
        return $this->di()->getPsrFactory();
150
    }
151
152
    /**
153
     * @return TemplateEngine
154
     */
155
    public function template(): TemplateEngine
156
    {
157
        return $this->di()->getTemplateEngine();
158
    }
159
160
    /**
161
     * @return ViewRenderer
162
     */
163
    public function view(): ViewRenderer
164
    {
165
        return $this->di()->getViewRenderer();
166
    }
167
168
    /**
169
     * @return SessionInterface|null
170
     */
171
    public function session(): ?SessionInterface
172
    {
173
        return $this->di()->getSessionManager();
174
    }
175
}
176