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