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) {
			// ...
		}
	}
}