Passaggio delle impostazioni ai presenter
Avete bisogno di passare ai presenter argomenti che non sono oggetti (ad esempio, informazioni se è in
esecuzione in modalità debug, percorsi di directory, ecc.) e che quindi non possono essere passati automaticamente tramite
autowiring? La soluzione è incapsularli in un oggetto Settings
.
Il servizio Settings
rappresenta un modo molto semplice e allo stesso tempo utile per fornire informazioni
sull'applicazione in esecuzione ai presenter. La sua forma specifica dipende esclusivamente dalle vostre esigenze particolari.
Esempio:
namespace App;
class Settings
{
public function __construct(
// da PHP 8.1 è possibile specificare readonly
public bool $debugMode,
public string $appDir,
// e così via
) {}
}
Esempio di registrazione nella configurazione:
services:
- App\Settings(
%debugMode%,
%appDir%,
)
Quando un presenter avrà bisogno delle informazioni fornite da questo servizio, semplicemente le richiederà nel costruttore:
class MyPresenter extends Nette\Application\UI\Presenter
{
public function __construct(
private App\Settings $settings,
) {}
public function renderDefault()
{
if ($this->settings->debugMode) {
// ...
}
}
}