Передача параметров презентаторам

Вам нужно передавать презентерам аргументы, которые не являются объектами (например, информацию о том, работает ли он в режиме отладки, пути к каталогам и т.д.) и поэтому не могут быть переданы автоматически с помощью автоподключения? Решение – инкапсулировать их в объект Settings.

Служба Settings – это очень простой и полезный способ предоставления информации о запущенном приложении докладчикам. Его конкретная форма полностью зависит от ваших конкретных потребностей. Пример:

namespace App;

class Settings
{
	public function __construct(
		// since PHP 8.1 it is possible to specify readonly
		public bool $debugMode,
		public string $appDir,
		// and so on
	) {}
}

Пример регистрации в конфигурации:

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