Nette Documentation Preview

syntax
Posredovanje nastavitev predstavnikom
*************************************

.[perex]
Ali morate predstavnikom posredovati argumente, ki niso predmeti (npr. informacije o tem, ali deluje v načinu za odpravljanje napak, poti do imenikov itd.) in jih zato ni mogoče samodejno posredovati s samodejnim povezovanjem? Rešitev je, da jih zapakirate v objekt `Settings`.

Storitev `Settings` je zelo enostaven in hkrati uporaben način za zagotavljanje informacij o delujoči aplikaciji predavateljem. Njena posebna oblika je v celoti odvisna od vaših posebnih potreb. Primer:

```php
namespace App;

class Settings
{
	public function __construct(
		// od PHP 8.1 je mogoče določiti samo za branje
		public bool $debugMode,
		public string $appDir,
		// in tako naprej
	) {}
}
```

Primer registracije v konfiguracijo:

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

Ko voditelj potrebuje informacije, ki jih zagotavlja ta storitev, jih preprosto zahteva v konstruktorju:

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

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

{{sitename: Best Practices}}

Posredovanje nastavitev predstavnikom

Ali morate predstavnikom posredovati argumente, ki niso predmeti (npr. informacije o tem, ali deluje v načinu za odpravljanje napak, poti do imenikov itd.) in jih zato ni mogoče samodejno posredovati s samodejnim povezovanjem? Rešitev je, da jih zapakirate v objekt Settings.

Storitev Settings je zelo enostaven in hkrati uporaben način za zagotavljanje informacij o delujoči aplikaciji predavateljem. Njena posebna oblika je v celoti odvisna od vaših posebnih potreb. Primer:

namespace App;

class Settings
{
	public function __construct(
		// od PHP 8.1 je mogoče določiti samo za branje
		public bool $debugMode,
		public string $appDir,
		// in tako naprej
	) {}
}

Primer registracije v konfiguracijo:

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

Ko voditelj potrebuje informacije, ki jih zagotavlja ta storitev, jih preprosto zahteva v konstruktorju:

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

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