Beállítások átadása presentereknek

Szüksége van arra, hogy olyan argumentumokat adjon át a presentereknek, amelyek nem objektumok (pl. információ arról, hogy debug módban fut-e, könyvtárak elérési útjai stb.), és ezért nem adhatók át automatikusan autowiring segítségével? A megoldás az, hogy becsomagolja őket egy Settings objektumba.

A Settings szolgáltatás egy nagyon egyszerű, mégis hasznos módja annak, hogy információkat szolgáltassunk a futó alkalmazásról a presentereknek. Konkrét formája kizárólag az Ön igényeitől függ. Példa:

namespace App;

class Settings
{
	public function __construct(
		// PHP 8.1-től kezdve megadható a readonly
		public bool $debugMode,
		public string $appDir,
		// és így tovább
	) {}
}

Példa a konfigurációba történő regisztrálásra:

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

Amikor egy presenternek szüksége van az e szolgáltatás által nyújtott információkra, egyszerűen elkéri a konstruktorban:

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

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