Posredovanje nastavitev v presenterje

Ali morate v presenterje posredovati argumente, ki niso objekti (npr. informacijo, ali teče v načinu za odpravljanje napak, poti do map itd.), in jih torej ni mogoče samodejno posredovati s pomočjo autowiringa? Rešitev je, da jih zapakirate v objekt Settings.

Storitev Settings predstavlja zelo enostaven in hkrati uporaben način za zagotavljanje informacij o tekoči aplikaciji presenterjem. Njena konkretna oblika je odvisna izključno od vaših specifičnih potreb. Primer:

namespace App;

class Settings
{
	public function __construct(
		// od PHP 8.1 je mogoče navesti readonly
		public bool $debugMode,
		public string $appDir,
		// in tako naprej
	) {}
}

Primer registracije v konfiguraciji:

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

Ko bo presenter potreboval informacije, ki jih zagotavlja ta storitev, jo bo preprosto zahteval v konstruktorju:

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

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