Beállítások átadása az előadóknak

Szüksége van arra, hogy olyan argumentumokat adjon át a prezentereknek, amelyek nem objektumok (pl. információ arról, hogy debug üzemmódban fut-e, könyvtárak elérési útvonalai stb.), és így nem adhatók át automatikusan az autowiring által? A megoldás az, hogy ezeket egy Settings objektumba kapszulázza.

A Settings szolgáltatás egy nagyon egyszerű, mégis hasznos módja annak, hogy egy futó alkalmazásról információt adjunk a bemutatóknak. Konkrét formája teljes mértékben az Ön konkrét igényeitől függ. Példa:

namespace App;

class Settings
{
	public function __construct(
		// a PHP 8.1 óta lehetőség van readonly megadására.
		public bool $debugMode,
		public string $appDir,
		// és így tovább
	) {}
}

Példa a konfigurációhoz történő regisztrációra:

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

Ha az előadónak szüksége van az e szolgáltatás által biztosított információkra, egyszerűen elkéri azokat a konstruktorban:

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

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