Nette Documentation Preview

syntax
Ayarları Sunum Yapanlara İletme
*******************************

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

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

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

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

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

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

{{sitename: En İyi Uygulamalar}}

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