Ayarları presenter'lara iletme

Presenter'lara nesne olmayan argümanları (örneğin, hata ayıklama modunda çalışıp çalışmadığı bilgisi, dizin yolları vb.) iletmeniz gerekiyor ve bu nedenle otomatik kablolama (autowiring) ile otomatik olarak iletilemiyorlar mı? Çözüm, bunları bir Settings nesnesine sarmaktır.

Settings hizmeti, çalışan uygulama hakkındaki bilgileri presenter'lara sağlamanın çok kolay ve aynı zamanda kullanışlı bir yoludur. Somut biçimi tamamen özel ihtiyaçlarınıza bağlıdır. Örnek:

namespace App;

class Settings
{
	public function __construct(
		// PHP 8.1'den itibaren readonly belirtilebilir
		public bool $debugMode,
		public string $appDir,
		// vb.
	) {}
}

Yapılandırmaya kayıt örneği:

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

Presenter bu hizmet tarafından sağlanan bilgilere ihtiyaç duyduğunda, yapıcıda basitçe ister:

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

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