Nette Documentation Preview

syntax
Yapılandırma dosyası nasıl yüklenir
***********************************
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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:

composer require nette/bootstrap

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:

$configurator = new Nette\Bootstrap\Configurator;
$configurator->setTempDirectory(__DIR__ . '/temp');

Linux veya macOS'ta, temp/ dizinine yazma izinleri ayarlayın.

Ve yapılandırma dosyalarına geliyoruz. Bunları addConfig() kullanarak yükleyeceğiz:

$configurator->addConfig(__DIR__ . '/database.neon');

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:

$container = $configurator->createContainer();

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:

$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ı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:

$configurator->setDebugMode('23.75.345.200');
// IP adresleri dizisi de belirtilebilir

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:

$configurator->setDebugMode('secret1234@23.75.345.200');

Geliştirme modunu localhost için bile tamamen devre dışı bırakabiliriz:

$configurator->setDebugMode(false);

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:

$configurator->addDynamicParameters([
	'remoteIp' => $_SERVER['REMOTE_ADDR'],
]);

projectId parametresine yapılandırmada %projectId% yazılarak başvurulabilir.