Presenter'lara Ayar Aktarma

Presenter'lara, autowiring ile otomatik olarak aktarılamayan nesne olmayan argümanlar (hata ayıklama kipini gösteren bir bayrak, dizin yolları vb.) aktarmanız mı gerekiyor? Çözüm, bunları özel bir Settings nesnesinin içine almaktır.

Settings servisi, çalışan uygulamayla ilgili bilgileri presenter'lara ulaştırmanın çok basit ama etkili bir yoludur. Somut yapısı tümüyle sizin ihtiyaçlarınıza bağlıdır. Örnek:

namespace App;

class Settings
{
	public function __construct(
		// PHP 8.1'den beri readonly kullanılabilir
		public bool $debugMode,
		public string $appDir,
		// vb.
	) {}
}

Yapılandırmada kaydetme örneği:

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

Bir presenter bu servisin sunduğu bilgilere ihtiyaç duyduğunda, onu yalnızca yapıcısında ister:

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

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