Yapılandırma Dosyası Nasıl Yüklenir
Nette'nin münferit bileşenleri yapılandırma dosyaları kullanılarak yapılandırılır. Bu dosyaların nasıl yükleneceğini göstereceğiz.
Tüm çerçeveyi kullanıyorsanız, başka bir şey yapmanıza gerek yoktur. Projede, yapılandırma dosyaları
için önceden hazırlanmış bir dizine config/
sahipsiniz ve uygulama yükleyici bunları yüklemekten
sorumludur. Bu makale, yalnızca bir Nette kütüphanesi kullanan ve yapılandırma dosyalarından yararlanmak isteyen
kullanıcılar içindir.
Konfigürasyon dosyaları genellikle NEON dilinde yazılır ve en iyi bu dili destekleyen editörlerde düzenlenir. Bunlar nesnelerin nasıl oluşturulacağı ve yapılandırılacağı ile ilgili talimatlar olarak düşünülebilir. Bu nedenle, bir yapılandırmanın yüklenmesinin sonucu, talep üzerine kullanmak istediğiniz diğer nesneleri oluşturacak bir nesne olan fabrika olarak adlandırılan bir nesne olacaktır. Örneğin, bir veritabanı bağlantısı vb.
Bu fabrikaya bağımlılık enjeksiyonu konteyneri (DI konteyneri) de denir ve ayrıntılarla ilgileniyorsanız bağımlılık enjeksiyonu ile ilgili bölümü okuyun.
Yapılandırmanın yüklenmesi ve konteynerin oluşturulması Nette\Bootstrap\Configurator sınıfı
tarafından gerçekleştirilir, bu nedenle önce nette/bootstrap
paketini yükleyeceğiz:
composer require nette/bootstrap
Ve Configurator
sınıfının bir örneğini oluşturun. Oluşturulan DI konteyneri diske önbelleğe
alınacağından, kaydedileceği dizinin yolunu ayarlamanız gerekir:
$configurator = new Nette\Bootstrap\Configurator;
$configurator->setTempDirectory(__DIR__ . '/temp');
Linux veya macOS üzerinde, temp/
dizini için yazma izinlerini ayarlayın.
Ve yapılandırma dosyalarının kendilerine geliyoruz. Bunlar addConfig()
kullanılarak yüklenir:
$configurator->addConfig(__DIR__ . '/database.neon');
Daha fazla yapılandırma dosyası eklemek istiyorsanız, addConfig()
işlevini birden çok kez
çağırabilirsiniz. Dosyalarda aynı anahtarlara sahip öğeler varsa, bunların üzerine yazılır (veya diziler söz konusu
olduğunda birleştirilir ). Daha sonra
eklenen bir dosya öncekinden daha yüksek önceliğe sahiptir.
Son adım bir DI konteyneri oluşturmaktır:
$container = $configurator->createContainer();
Ve zaten bizim için istenen nesneleri oluşturacaktır. Örneğin, Nette Database için yapılandırmayı kullanıyorsanız, veritabanı bağlantılarını oluşturmasını isteyebilirsiniz:
$db = $container->getByType(Nette\Database\Connection::class);
// veya
$explorer = $container->getByType(Nette\Database\Explorer::class);
// veya birden fazla bağlantı oluştururken
$db = $container->getByName('database.main.connection');
Ve şimdi veritabanı ile çalışabilirsiniz!
Geliştirme ve Üretim Modu
Geliştirme modunda, yapılandırma dosyaları her değiştirildiğinde kapsayıcı otomatik olarak güncellenir. Üretim modunda, yalnızca bir kez oluşturulur ve değişiklikler kontrol edilmez. Yani geliştirici modu maksimum programcı kolaylığını, üretim modu ise performansı hedefler.
Mod seçimi otomatik algılama ile yapılır, bu nedenle genellikle herhangi bir şeyi yapılandırmaya veya manuel olarak
değiştirmeye gerek yoktur. Uygulama bir localhost (yani, IP adresi 127.0.0.1
veya ::1
) üzerinde
çalışıyorsa ve proxy (yani, HTTP başlığı) yoksa mod geliştirme olur. Aksi takdirde üretim modunda çalışır.
Belirli bir IP adresinden erişen programcılar gibi diğer durumlarda geliştirme modunu etkinleştirmek istiyorsanız
setDebugMode()
adresini kullanın:
$configurator->setDebugMode('23.75.345.200');
// bir dizi IP adresi de belirtilebilir
IP adresini bir çerez ile birleştirmenizi kesinlikle öneririz. nette-debug
çerezinde secret1234
gibi gizli bir belirteç saklayın ve bu şekilde belirli bir IP adresinden erişen programcılar için geliştirme modunu
etkinleştirin ve ayrıca çerezde belirtilen belirtece sahip olun:
$configurator->setDebugMode('secret1234@23.75.345.200');
Ayrıca localhost için bile geliştirici modunu tamamen devre dışı bırakabilirsiniz:
$configurator->setDebugMode(false);
Parametreler
Ayrıca parameters
bölümünde tanımlanan yapılandırma dosyalarındaki parametreleri de kullanabilirsiniz.
Ayrıca addDynamicParameters()
yöntemi kullanılarak dışarıdan da yerleştirilebilirler:
$configurator->addDynamicParameters([
'remoteIp' => $_SERVER['REMOTE_ADDR'],
]);
projectId
parametresine yapılandırmada %projectId%
gösterimiyle başvurulabilir.