Transmiterea setărilor către presenteri

Aveți nevoie să transmiteți argumente către presenteri care nu sunt obiecte (de ex. informația dacă rulează în modul debug, căi către directoare etc.) și, prin urmare, nu pot fi transmise automat prin autowiring? Soluția este să le încapsulați într-un obiect Settings.

Serviciul Settings reprezintă o modalitate foarte ușoară și totuși utilă de a furniza informații despre aplicația care rulează către presenteri. Forma sa specifică depinde exclusiv de nevoile dvs. concrete. Exemplu:

namespace App;

class Settings
{
	public function __construct(
		// de la PHP 8.1 este posibil să specificați readonly
		public bool $debugMode,
		public string $appDir,
		// și așa mai departe
	) {}
}

Exemplu de înregistrare în configurație:

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

Când presenterul va avea nevoie de informațiile furnizate de acest serviciu, pur și simplu îl va solicita în constructor:

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

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