Nette Documentation Preview

syntax
Ü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}}

Übergabe von Einstellungen an Moderatoren

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:

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:

services:
	- App\Settings(
		%debugMode%,
		%appDir%,
	)

Wenn der Präsentator die von diesem Dienst bereitgestellten Informationen benötigt, fragt er sie einfach im Konstruktor ab:

class MyPresenter extends Nette\Application\UI\Presenter
{
	public function __construct(
		private App\Settings $settings,
	) {}

	public function renderDefault()
	{
		if ($this->settings->debugMode) {
			// ...
		}
	}
}