Yapılandırma Okuma ve Yazma
Ayarlar farklı kuralları olan iki yerde durur: talep üzerine yüklenen PHP dosyaları ve dosyaya ait olmayan değerler için veritabanı satırları.
Genel Bakış
Yapılandırma dosyası, dizi döndüren bir PHP dosyasıdır. Birini okumak bir dosya işlemi değil, bir yol ifadesidir: dosyayı adlandırır, sonra eğik çizgilerle dizinin içine yürürsünüz; dosya, ilk soruluşta yüklenir.
İkinci depo bir tablodur; geliştiricinin gönderdiği yapılandırma değil, kuruluma özgü durum olan değerler için. İkisine de aynı sınıftan, farklı metot adlarıyla erişilir ve kaçınmaya değer hata yanlış olanı seçmektir.
Referans
Dosya Tabanlı Ayarlar
public static function get($arg = null);
public static function set($key, $values, $merge = false): array|false;
public static function save($name = '', $data = []): bool;
public static function merge($arg = []): bool;
false yanıtlar, yani saklanmış bir false ile hiç ayarlanmamış bir anahtar aynı görünür. Argümansız çağrı o ana kadar yüklenmiş dosyaları verir, var olan bütün dosyaları değil.
[$key => $birlesmis] yanıtlar; değerler boşsa ya da dosya yoksa false.
general, options, theme, crypt, sms ve diğerleri.
save Neyi Bekler, Neyi Yazar
Dosya, döndürülen bir dizidir ve kendi adına sarılmış olabilir de olmayabilir de. İki biçim de kabul edilir: diskteki dosya sarılıysa ve verdiğiniz veri değilse, yazmadan önce sizin için sarılır.
<?php
return [
'cache' => 'on',
'rich-url' => 'on',
];
Config::save("general", ['cache' => 'on', 'rich-url' => 'on']);
Config::save("general", ['general' => ['cache' => 'on', 'rich-url' => 'on']]);
Kaynak, dizi dışa aktarıcısıyla üretilir ve dosya yöneticisinden geçirilerek yazılır; o da az önce değiştirdiği dosyanın derlenmiş kopyasını geçersiz kılar. Ham bir yazma bunu kendi yapmak zorundadır.
Veritabanı Tabanlı Ayarlar
public static function getd($name = '');
public static function setd($name = '', $content = '');
public static function deld($name = '');
0, [] ve {}. Var olmayan satır null yanıtlar.
null yanıtlar.
Depo Seçimi
| Değer | Depo | Neden |
|---|---|---|
| Operatörün bir kez ayarladığı anahtar | Dosya | Neredeyse her istekte okunur; dosya okuma sorgudan ucuzdur |
| Bir servisin kimlik bilgileri | Dosya, modülün kendi dosyası | Modülle birlikte taşınır, tablolara dağılmaz |
| Uygulamanın kendi güncellediği durum | Veritabanı | Sık yazılır ve dosya yazımı bunun için doğru araç değildir |
| Tek bir operatörün tercihi | Hiçbiri | Kişiye özel tercih kuruluma değil o kişiye aittir |
Örnek
Dosyayı okuyun, değeri değiştirin, yazın ve aynı istekte geri okuyun.
public function save_general(Operation $operation): bool
{
$operation->demo();
$data = Config::get("general"); // dosyanın tamamı
$data['cache'] = Filter::init("POST/cache", "route") === 'on' ? 'on' : 'off';
if (!Config::save("general", $data))
throw new Exception(Language::gc("error/settings-not-written"));
// Aynı istek, ve değer şimdiden yenisi.
$now = Config::get("general/cache");
// Uygulamanın sahip olduğu durum bunun yerine satır deposuna gider.
Config::setd("last_settings_change", ['at' => date('c'), 'cache' => $now]);
return $operation->output(['status' => "successful", 'cache' => $now]);
}
$state = Config::getd("last_settings_change"); // dizi, sizin için çözülmüş
if ($state === null) {
// Hiç yazılmamış ya da kaldırılmış. "Boş olarak yazılmış" ile aynı şey değil.
}
Tuzaklar
Varsayılanında bırakılırsa özyinelemeli olarak değiştirir, yani iç içe bir anahtarın altındaki kardeşler yaşamaya devam eder. True geçmek yalnız en üst seviyede birleştirir; bu da iç içe bir diziyi bütün olarak değiştirir ve adını anmadığınız anahtarları düşürür. Bir grubun altındaki tek anahtarı değiştirmek varsayılan davranıştır, birleştiren davranış değil.
Ayarlayıcı ile kaydedici bilerek ayrıdır; böylece bir istek dosyayı yeniden yazmadan kendisi için bir ayarı geçersiz kılabilir. Bir değişikliğin isteği aşması gerekiyorsa kaydedin; veri argümanı verilmeden yapılan kayıt, ayarlayıcının bellekte bıraktığı neyse onu işler.
Sunucu derlenmiş bir kopyayı tutup dosya değiştikten sonra da sunmaya devam edebilir; kayıt başarılı görünür ve eski değer bir sonraki sayfada geri gelir. O kopyayı geçersiz kılan dosya yöneticisiyle yazın; ham yazma bunu kendi yapmak zorundadır.
Herkes için tek bir değer vardır. Kişisel bir tercihi buraya koymak, onu değiştiren ilk operatörün diğer bütün operatörler için de değiştirmesi demektir; o tür bir değer çereze ya da kullanıcı kaydına aittir.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.