Nette Documentation Preview

syntax
Presenter'lara Ayar Aktarma
***************************

.[perex]
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:

```php
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:

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

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

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

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

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