Nette Documentation Preview

syntax
Transmettre les paramètres aux présentateurs
********************************************

.[perex]
Avez-vous besoin de transmettre aux présentateurs des arguments qui ne sont pas des objets (par exemple, des informations indiquant si le présentateur fonctionne en mode de débogage, des chemins de répertoire, etc.) et qui ne peuvent donc pas être transmis automatiquement par le câblage automatique ? La solution consiste à les encapsuler dans un objet `Settings`.

Le service `Settings` est un moyen très simple et utile de fournir aux présentateurs des informations sur une application en cours d'exécution. Sa forme spécifique dépend entièrement de vos besoins particuliers. Exemple :

```php
namespace App;

class Settings
{
	public function __construct(
		// depuis PHP 8.1 il est possible de spécifier readonly
		public bool $debugMode,
		public string $appDir,
		// et ainsi de suite
	) {}
}
```

Exemple d'inscription à la configuration :

```neon
services:
	- App\Settings(
		%debugMode%,
		%appDir%,
	)
```

Lorsque le diffuseur a besoin des informations fournies par ce service, il lui suffit de les demander dans le constructeur :

```php
class MyPresenter extends Nette\Application\UI\Presenter
{
	public function __construct(
		private App\Settings $settings,
	) {}

	public function renderDefault()
	{
		if ($this->settings->debugMode) {
			// ...
		}
	}
}
```

{{sitename: Meilleures pratiques}}

Transmettre les paramètres aux présentateurs

Avez-vous besoin de transmettre aux présentateurs des arguments qui ne sont pas des objets (par exemple, des informations indiquant si le présentateur fonctionne en mode de débogage, des chemins de répertoire, etc.) et qui ne peuvent donc pas être transmis automatiquement par le câblage automatique ? La solution consiste à les encapsuler dans un objet Settings.

Le service Settings est un moyen très simple et utile de fournir aux présentateurs des informations sur une application en cours d'exécution. Sa forme spécifique dépend entièrement de vos besoins particuliers. Exemple :

namespace App;

class Settings
{
	public function __construct(
		// depuis PHP 8.1 il est possible de spécifier readonly
		public bool $debugMode,
		public string $appDir,
		// et ainsi de suite
	) {}
}

Exemple d'inscription à la configuration :

services:
	- App\Settings(
		%debugMode%,
		%appDir%,
	)

Lorsque le diffuseur a besoin des informations fournies par ce service, il lui suffit de les demander dans le constructeur :

class MyPresenter extends Nette\Application\UI\Presenter
{
	public function __construct(
		private App\Settings $settings,
	) {}

	public function renderDefault()
	{
		if ($this->settings->debugMode) {
			// ...
		}
	}
}