Posredovanje nastavitev v presenterje
Ali morate v presenterje posredovati argumente, ki niso objekti (npr. informacijo, ali teče v načinu za
odpravljanje napak, poti do map itd.), in jih torej ni mogoče samodejno posredovati s pomočjo autowiringa? Rešitev je, da jih
zapakirate v objekt Settings
.
Storitev Settings
predstavlja zelo enostaven in hkrati uporaben način za zagotavljanje informacij o tekoči
aplikaciji presenterjem. Njena konkretna oblika je odvisna izključno od vaših specifičnih potreb. Primer:
namespace App;
class Settings
{
public function __construct(
// od PHP 8.1 je mogoče navesti readonly
public bool $debugMode,
public string $appDir,
// in tako naprej
) {}
}
Primer registracije v konfiguraciji:
services:
- App\Settings(
%debugMode%,
%appDir%,
)
Ko bo presenter potreboval informacije, ki jih zagotavlja ta storitev, jo bo preprosto zahteval v konstruktorju:
class MyPresenter extends Nette\Application\UI\Presenter
{
public function __construct(
private App\Settings $settings,
) {}
public function renderDefault()
{
if ($this->settings->debugMode) {
// ...
}
}
}