Ü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) {
			// ...
		}
	}
}