Ayarları presenter'lara iletme
Presenter'lara nesne olmayan argümanları (örneğin, hata ayıklama modunda çalışıp çalışmadığı
bilgisi, dizin yolları vb.) iletmeniz gerekiyor ve bu nedenle otomatik kablolama (autowiring) ile otomatik olarak iletilemiyorlar
mı? Çözüm, bunları bir Settings
nesnesine sarmaktır.
Settings
hizmeti, çalışan uygulama hakkındaki bilgileri presenter'lara sağlamanın çok kolay ve aynı
zamanda kullanışlı bir yoludur. Somut biçimi tamamen özel ihtiyaçlarınıza bağlıdır. Örnek:
namespace App;
class Settings
{
public function __construct(
// PHP 8.1'den itibaren readonly belirtilebilir
public bool $debugMode,
public string $appDir,
// vb.
) {}
}
Yapılandırmaya kayıt örneği:
services:
- App\Settings(
%debugMode%,
%appDir%,
)
Presenter bu hizmet tarafından sağlanan bilgilere ihtiyaç duyduğunda, yapıcıda basitçe ister:
class MyPresenter extends Nette\Application\UI\Presenter
{
public function __construct(
private App\Settings $settings,
) {}
public function renderDefault()
{
if ($this->settings->debugMode) {
// ...
}
}
}