Předání nastavení do presenterů
Potřebujete do presenterů předávat argumenty, které nejsou objekty (např. informaci, zda běží v debug
režimu, cesty k adresářům apod.), a tedy nemohou být předány automaticky pomocí autowiringu? Řešením je zapouzdřit je
do objektu Settings
.
Služba Settings
přestavuje velmi snadný a přitom užitečný způsob, jak poskytovat informace o běžící
aplikaci presenterům. Její konkrétní podoba záleží čistě na vašich konkrétních potřebách. Příklad:
namespace App;
class Settings
{
public function __construct(
// od PHP 8.1 je možné uvést readonly
public bool $debugMode,
public string $appDir,
// a tak dále
) {}
}
Ukázka registrace do konfigurace:
services:
- App\Settings(
%debugMode%,
%appDir%,
)
Když bude presenter potřebovat informace poskytované touto službou, jednoduše si o ni řekne v konstruktoru:
class MyPresenter extends Nette\Application\UI\Presenter
{
public function __construct(
private App\Settings $settings,
) {}
public function renderDefault()
{
if ($this->settings->debugMode) {
// ...
}
}
}