Einstellungen an Presenter übergeben
Müssen Sie Argumente an Presenter übergeben, die keine Objekte sind (z. B. Information, ob im Debug-Modus
ausgeführt wird, Pfade zu Verzeichnissen usw.) und daher nicht automatisch über Autowiring übergeben werden können? Die
Lösung besteht darin, sie in ein Settings
-Objekt zu kapseln.
Der Settings
-Dienst stellt eine sehr einfache und dennoch nützliche Methode dar, um Informationen über die
laufende Anwendung an Presenter bereitzustellen. Seine konkrete Form hängt ganz von Ihren spezifischen Bedürfnissen ab.
Beispiel:
namespace App;
class Settings
{
public function __construct(
// ab 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 der Presenter die von diesem Dienst bereitgestellten Informationen benötigt, fordert er sie 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) {
// ...
}
}
}