Transmission des paramètres aux presenters
Avez-vous besoin de transmettre aux presenters des arguments qui ne sont pas des objets (par exemple,
l'information s'ils s'exécutent en mode débogage, les chemins vers les répertoires, etc.) et qui ne peuvent donc pas être
transmis automatiquement via l'autowiring ? La solution est de les encapsuler dans un objet Settings
.
Le service Settings
représente une manière très simple et pourtant utile de fournir des informations sur
l'application en cours d'exécution aux presenters. Sa forme concrète dépend entièrement de vos besoins spécifiques.
Exemple :
namespace App;
class Settings
{
public function __construct(
// à partir de PHP 8.1, il est possible d'indiquer readonly
public bool $debugMode,
public string $appDir,
// et ainsi de suite
) {}
}
Exemple d'enregistrement dans la configuration :
services:
- App\Settings(
%debugMode%,
%appDir%,
)
Lorsque le presenter aura besoin des informations fournies par ce service, il les demandera simplement dans le constructeur :
class MyPresenter extends Nette\Application\UI\Presenter
{
public function __construct(
private App\Settings $settings,
) {}
public function renderDefault()
{
if ($this->settings->debugMode) {
// ...
}
}
}