/
passing-settings-to-presenters.texy
51 lines (41 loc) · 1.35 KB
/
passing-settings-to-presenters.texy
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
Übergabe von Einstellungen an Moderatoren
*****************************************
.[perex]
Müssen Sie Argumente an Presenter übergeben, bei denen es sich nicht um Objekte handelt (z. B. Informationen darüber, ob der Presenter im Debug-Modus läuft, Verzeichnispfade usw.) und die daher nicht automatisch durch Autowiring übergeben werden können? Die Lösung ist, sie in einem `Settings` Objekt zu kapseln.
Der Dienst `Settings` ist eine sehr einfache, aber nützliche Möglichkeit, Präsentatoren Informationen über eine laufende Anwendung zur Verfügung zu stellen. Die konkrete Ausgestaltung hängt ganz von Ihren speziellen Bedürfnissen ab. Beispiel:
```php
namespace App;
class Settings
{
public function __construct(
// seit PHP 8.1 ist es möglich, readonly anzugeben
public bool $debugMode,
public string $appDir,
// und so weiter
) {}
}
```
Beispiel für die Anmeldung zur Konfiguration:
```neon
services:
- App\Settings(
%debugMode%,
%appDir%,
)
```
Wenn der Präsentator die von diesem Dienst bereitgestellten Informationen benötigt, fragt er sie einfach im Konstruktor ab:
```php
class MyPresenter extends Nette\Application\UI\Presenter
{
public function __construct(
private App\Settings $settings,
) {}
public function renderDefault()
{
if ($this->settings->debugMode) {
// ...
}
}
}
```
{{sitename: Bewährte Praktiken}}