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.

versiyon: 3.x