Passare impostazioni ai presenter
Dovete passare ai presenter argomenti non oggetto (come un flag che indica la modalità debug, dei percorsi di
directory ecc.) che non si possono passare automaticamente tramite autowiring? La soluzione è racchiuderli in un apposito oggetto
Settings.
Il servizio Settings offre un modo molto semplice ma efficace di fornire ai presenter informazioni
sull'applicazione in esecuzione. La sua struttura concreta dipende interamente dalle vostre esigenze. Esempio:
namespace App;
class Settings
{
public function __construct(
// da PHP 8.1 si può usare readonly
public bool $debugMode,
public string $appDir,
// e così via
) {}
}
Esempio di registrazione nella configurazione:
services:
- App\Settings(
%debugMode%,
%appDir%,
)
Quando un presenter ha bisogno delle informazioni fornite da questo servizio, si limita a chiederlo nel proprio costruttore:
class MyPresenter extends Nette\Application\UI\Presenter
{
public function __construct(
private App\Settings $settings,
) {}
public function renderDefault()
{
if ($this->settings->debugMode) {
// ...
}
}
}