Przekazywanie ustawień do presenterów
Potrzebujesz przekazać do presenterów argumenty nieobiektowe (jak flaga wskazująca tryb debug, ścieżki do
katalogów itd.), których nie da się przekazać automatycznie przez autowiring? Rozwiązaniem jest zamknięcie ich w dedykowanym
obiekcie Settings.
Usługa Settings daje bardzo prosty, a zarazem skuteczny sposób dostarczania presenterom informacji
o działającej aplikacji. Jej konkretna struktura zależy wyłącznie od Twoich potrzeb. Przykład:
namespace App;
class Settings
{
public function __construct(
// od PHP 8.1 można używać readonly
public bool $debugMode,
public string $appDir,
// i tak dalej
) {}
}
Przykład rejestracji w konfiguracji:
services:
- App\Settings(
%debugMode%,
%appDir%,
)
Gdy presenter potrzebuje informacji dostarczanych przez tę usługę, po prostu prosi o nią w swoim konstruktorze:
class MyPresenter extends Nette\Application\UI\Presenter
{
public function __construct(
private App\Settings $settings,
) {}
public function renderDefault()
{
if ($this->settings->debugMode) {
// ...
}
}
}