Передача налаштувань у презентери

Вам потрібно передавати в презентери аргументи, які не є об'єктами (наприклад, інформацію про те, чи працює додаток у режимі налагодження, шляхи до каталогів тощо), і тому їх не можна передати автоматично за допомогою autowiring? Рішенням є інкапсуляція їх в об'єкт Settings.

Сервіс Settings представляє дуже простий, але корисний спосіб надання інформації про запущений додаток презентерам. Його конкретна форма залежить виключно від ваших конкретних потреб. Приклад:

namespace App;

class Settings
{
	public function __construct(
		// від PHP 8.1 можна вказати readonly
		public bool $debugMode,
		public string $appDir,
		// і так далі
	) {}
}

Приклад реєстрації в конфігурації:

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

Коли презентеру знадобиться інформація, що надається цим сервісом, він просто запросить її в конструкторі:

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

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