Przekazywanie ustawień do presenterów
Potrzebujesz przekazywać do presenterów argumenty, które nie są obiektami (np. informację, czy działa w
trybie debugowania, ścieżki do katalogów itp.), a więc nie mogą być przekazane automatycznie za pomocą autowiringu?
Rozwiązaniem jest zamknięcie ich w obiekcie Settings
.
Usługa Settings
stanowi bardzo łatwy, a zarazem użyteczny sposób dostarczania informacji o działającej
aplikacji presenterom. Jej konkretna postać zależy wyłącznie od Twoich konkretnych potrzeb. Przykład:
namespace App;
class Settings
{
public function __construct(
// od PHP 8.1 można użyć readonly
public bool $debugMode,
public string $appDir,
// i tak dalej
) {}
}
Przykład rejestracji w konfiguracji:
services:
- App\Settings(
%debugMode%,
%appDir%,
)
Gdy presenter będzie potrzebował informacji dostarczanych przez tę usługę, po prostu poprosi o nią w konstruktorze:
class MyPresenter extends Nette\Application\UI\Presenter
{
public function __construct(
private App\Settings $settings,
) {}
public function renderDefault()
{
if ($this->settings->debugMode) {
// ...
}
}
}