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