Transmiterea setărilor către presenteri
Aveți nevoie să transmiteți argumente către presenteri care nu sunt obiecte (de ex. informația dacă
rulează în modul debug, căi către directoare etc.) și, prin urmare, nu pot fi transmise automat prin autowiring? Soluția
este să le încapsulați într-un obiect Settings
.
Serviciul Settings
reprezintă o modalitate foarte ușoară și totuși utilă de a furniza informații despre
aplicația care rulează către presenteri. Forma sa specifică depinde exclusiv de nevoile dvs. concrete. Exemplu:
namespace App;
class Settings
{
public function __construct(
// de la PHP 8.1 este posibil să specificați readonly
public bool $debugMode,
public string $appDir,
// și așa mai departe
) {}
}
Exemplu de înregistrare în configurație:
services:
- App\Settings(
%debugMode%,
%appDir%,
)
Când presenterul va avea nevoie de informațiile furnizate de acest serviciu, pur și simplu îl va solicita în constructor:
class MyPresenter extends Nette\Application\UI\Presenter
{
public function __construct(
private App\Settings $settings,
) {}
public function renderDefault()
{
if ($this->settings->debugMode) {
// ...
}
}
}