Transmiterea setărilor către prezentatori
Aveți nevoie să transmiteți prezentatorilor argumente care nu sunt obiecte (de exemplu, informații despre
faptul că rulează în modul de depanare, căi de acces la directoare etc.) și care, prin urmare, nu pot fi transmise automat
prin autowiring? Soluția este să le încapsulați într-un obiect Settings
.
Serviciul Settings
este o modalitate foarte simplă, dar utilă, de a furniza prezentatorilor informații despre
o aplicație în curs de execuție. Forma sa specifică depinde în întregime de nevoile dumneavoastră particulare.
Exemplu:
namespace App;
class Settings
{
public function __construct(
// de la PHP 8.1 este posibil să se specifice readonly
public bool $debugMode,
public string $appDir,
// și așa mai departe
) {}
}
Exemplu de înregistrare în configurație:
services:
- App\Settings(
%debugMode%,
%appDir%,
)
Atunci când prezentatorul are nevoie de informațiile furnizate de acest serviciu, el le solicită pur și simplu în constructor:
class MyPresenter extends Nette\Application\UI\Presenter
{
public function __construct(
private App\Settings $settings,
) {}
public function renderDefault()
{
if ($this->settings->debugMode) {
// ...
}
}
}