Einstellungen an Presenter übergeben
Müssen Sie an Presenter Argumente übergeben, die keine Objekte sind (z. B. die Information, ob die Anwendung im
Debug-Modus läuft, Pfade zu Verzeichnissen usw.) und die deshalb nicht automatisch per Autowiring übergeben werden können? Die
Lösung ist, sie in ein Objekt Settings zu kapseln.
Der Service Settings stellt einen sehr einfachen und zugleich nützlichen Weg dar, Presentern Informationen über
die laufende Anwendung bereitzustellen. Seine konkrete Gestalt hängt ganz von Ihren Bedürfnissen ab. Beispiel:
namespace App;
class Settings
{
public function __construct(
// seit PHP 8.1 kann readonly angegeben werden
public bool $debugMode,
public string $appDir,
// und so weiter
) {}
}
Beispiel für die Registrierung in der Konfiguration:
services:
- App\Settings(
%debugMode%,
%appDir%,
)
Wenn ein Presenter die von diesem Service bereitgestellten Informationen braucht, fordert er ihn einfach im Konstruktor an:
class MyPresenter extends Nette\Application\UI\Presenter
{
public function __construct(
private App\Settings $settings,
) {}
public function renderDefault()
{
if ($this->settings->debugMode) {
// ...
}
}
}