Nette Documentation Preview

syntax
Passaggio delle impostazioni ai presentatori
********************************************

.[perex]
È necessario passare ai presentatori argomenti che non sono oggetti (ad esempio, informazioni sull'esecuzione in modalità di debug, percorsi di directory, ecc. La soluzione è incapsularli in un oggetto `Settings`.

Il servizio `Settings` è un modo molto semplice e utile per fornire informazioni su un'applicazione in esecuzione ai presentatori. La sua forma specifica dipende interamente dalle vostre esigenze particolari. Esempio:

```php
namespace App;

class Settings
{
	public function __construct(
		// a partire da PHP 8.1 è possibile specificare readonly
		public bool $debugMode,
		public string $appDir,
		// e così via
	) {}
}
```

Esempio di registrazione alla configurazione:

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

Quando il presentatore ha bisogno delle informazioni fornite da questo servizio, le richiede semplicemente nel costruttore:

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

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

{{sitename: Migliori pratiche}}

Passaggio delle impostazioni ai presentatori

È necessario passare ai presentatori argomenti che non sono oggetti (ad esempio, informazioni sull'esecuzione in modalità di debug, percorsi di directory, ecc. La soluzione è incapsularli in un oggetto Settings.

Il servizio Settings è un modo molto semplice e utile per fornire informazioni su un'applicazione in esecuzione ai presentatori. La sua forma specifica dipende interamente dalle vostre esigenze particolari. Esempio:

namespace App;

class Settings
{
	public function __construct(
		// a partire da PHP 8.1 è possibile specificare readonly
		public bool $debugMode,
		public string $appDir,
		// e così via
	) {}
}

Esempio di registrazione alla configurazione:

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

Quando il presentatore ha bisogno delle informazioni fornite da questo servizio, le richiede semplicemente nel costruttore:

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

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