Yapılandırma dosyası nasıl yüklenir
Nette'nin bireysel bileşenlerini yapılandırma dosyaları kullanarak ayarlıyoruz. Bu dosyaların nasıl yükleneceğini göstereceğiz.
Eğer tüm framework'ü kullanıyorsanız, başka bir şey yapmanıza gerek yoktur. Projenizde yapılandırma
dosyaları için önceden hazırlanmış bir config/
dizini bulunur ve bunların yüklenmesinden uygulama yükleyicisi sorumludur. Bu makale,
yalnızca bir Nette kütüphanesi kullanan ve yapılandırma dosyalarının olanaklarından yararlanmak isteyen kullanıcılar
içindir.
Yapılandırma dosyaları genellikle NEON formatında yazılır ve en iyi şekilde destekleyen düzenleyicilerde düzenlenir. Bunları, nesnelerin nasıl oluşturulacağı ve yapılandırılacağı konusunda talimatlar olarak düşünebiliriz. Yani, yapılandırmanın yüklenmesinin sonucu, istek üzerine kullanmak istediğimiz diğer nesneleri (örneğin, veritabanı bağlantısı vb.) oluşturacak olan fabrika olarak adlandırılan bir nesne olacaktır.
Bu fabrikaya aynı zamanda dependency injection konteyneri (DI konteyneri) denir ve ayrıntılarla ilgileniyorsanız, dependency injection bölümünü 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 kuracağız:
Ve Configurator
sınıfının bir örneğini oluşturacağız. Oluşturulan DI konteyneri diske önbelleğe
alınacağından, kaydedileceği dizinin yolunu ayarlamak gerekir:
Linux veya macOS'ta, temp/
dizinine yazma izinleri ayarlayın.
Ve yapılandırma dosyalarına geliyoruz. Bunları addConfig()
kullanarak yükleyeceğiz:
Daha fazla yapılandırma dosyası eklemek istiyorsak, addConfig()
fonksiyonunu birden çok kez çağırabiliriz.
Dosyalarda aynı anahtarlara sahip öğeler görünürse, bunlar üzerine yazılır (veya diziler durumunda birleştirilir). Daha sonra eklenen dosya, öncekinden daha
yüksek önceliğe sahiptir.
Son adım DI konteynerini oluşturmaktır:
Ve bu bize istenen nesneleri oluşturacaktır. Örneğin, Nette Database için yapılandırma kullanıyorsanız, veritabanı bağlantıları oluşturmasını isteyebilirsiniz:
Ve şimdi veritabanıyla çalışabilirsiniz!
Geliştirme vs Üretim Modu
Geliştirme modunda, konteyner yapılandırma dosyaları her değiştiğinde otomatik olarak güncellenir. Üretim modunda, yalnızca bir kez oluşturulur ve değişiklikler kontrol edilmez. Bu nedenle geliştirme modu, programcının maksimum rahatlığına odaklanırken, üretim modu performansa ve canlı dağıtıma odaklanır.
Mod seçimi otomatik algılama ile yapılır, bu nedenle genellikle bir şey yapılandırmaya veya manuel olarak değiştirmeye
gerek yoktur. Uygulama localhost'ta (yani IP adresi 127.0.0.1
veya ::1
) çalıştırılıyorsa ve bir
proxy mevcut değilse (yani HTTP başlığı yoksa) mod geliştirme modudur. Aksi takdirde, üretim modunda çalışır.
Geliştirme modunu diğer durumlarda da etkinleştirmek istiyorsak, örneğin belirli bir IP adresinden erişen programcılar
için setDebugMode()
kullanırız:
Kesinlikle bir IP adresini bir çerezle birleştirmenizi öneririz. nette-debug
çerezine gizli bir belirteç,
örneğin secret1234
kaydedeceğiz ve bu şekilde belirli bir IP adresinden erişen ve aynı zamanda çerezde
belirtilen belirtece sahip olan programcılar için geliştirme modunu etkinleştireceğiz:
Geliştirme modunu localhost için bile tamamen devre dışı bırakabiliriz:
Parametreler
Yapılandırma dosyalarında, parameters
bölümünde tanımlanan parametreleri de kullanabilirsiniz.
Bunlar ayrıca addDynamicParameters()
yöntemi kullanılarak dışarıdan da eklenebilir:
projectId
parametresine yapılandırmada %projectId%
yazılarak başvurulabilir.