プレゼンターへの設定の受け渡し

オートワイヤリングでは自動的に渡せない、オブジェクトでない引数(デバッグモードを示すフラグ、ディレクトリのパスなど)をプレゼンターに渡す必要がありますか。その答えは、それらを専用の 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) {
			// ...
		}
	}
}