Ayarları Sunum Yapanlara İletme

Sunuculara nesne olmayan (örneğin hata ayıklama modunda çalışıp çalışmadığına ilişkin bilgiler, dizin yolları vb.) ve bu nedenle otomatik kablolama ile otomatik olarak aktarılamayan argümanlar aktarmanız mı gerekiyor? Çözüm, bunları bir Settings nesnesi içinde kapsüllemektir.

Settings hizmeti, çalışan bir uygulama hakkında sunum yapanlara bilgi sağlamanın çok kolay ama kullanışlı bir yoludur. Özel şekli tamamen sizin özel ihtiyaçlarınıza bağlıdır. Örnek:

namespace App;

class Settings
{
	public function __construct(
		// PHP 8.1'den beri salt okunur olarak belirtmek mümkündür
		public bool $debugMode,
		public string $appDir,
		// ve böyle devam eder
	) {}
}

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

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

Sunum yapan kişi bu hizmet tarafından sağlanan bilgiye ihtiyaç duyduğunda, bunu kurucudan istemesi yeterlidir:

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

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