DataStore ile Uygulama Verileri
Storage/Data altındaki JSON uygulama verilerini güvenli, atomik ve container uyumlu biçimde yönetin.
This article is currently available in Turkish. Its English translation is being prepared.
DataStore, birbiriyle aynı container alanını paylaşan Site ve iPanel projelerinin Storage/Data altındaki JSON verilerini tek sözleşmeyle yönetir. Dosyalar gerçek veri kaynağıdır; önbellek yalnızca tekrar eden okumaları azaltır.
DataStore, KUT çekirdeğindeki PHP tabanlı Config sınıfının yerine geçmez. Config, Projects/.../Config ve Settings yapılandırmalarını; DataStore ise uygulamanın çalışma sırasında değiştirebildiği JSON verilerini yönetir.Ayar okuma
$general = DataStore::get('settings_general');
echo $general->title;
$routes = DataStore::get('settings_routes', true);
echo $routes['home'];
İkinci parametre true olduğunda ilişkisel dizi, varsayılan kullanımda nesne döner. Dosya bulunamazsa veya dosya adı güvenli değilse sonuç false olur.
Ayar yazma
$general = DataStore::get('settings_general', true);
$general['title'] = 'Yeni Başlık';
if(! DataStore::set('settings_general', $general))
{
throw new RuntimeException('Ayar kaydedilemedi.');
}
set() JSON dosyasını tamamen yeniler. Başarılı yazımdan sonra istek içindeki değer güncellenir ve aynı container'ı kullanan projelerin ortak ayar önbelleği geçersizleştirilir.
Ayar paketini yükleme
$settings = DataStore::bundle([
'settings_general',
'settings_language',
'settings_theme',
'settings_smtp'
]);
echo $settings->general->title;
echo $settings->theme->name;
bundle(), verilen dosyaları tek nesnede toplar ve settings_ önekini özellik adından kaldırır. Böylece settings_general verisine $settings->general ile erişilir. Kaynak parmak izi değiştiğinde dosya sonraki istekte yeniden okunur.
Varlık denetimi ve geçersizleştirme
if(DataStore::exists('settings_api'))
{
$api = DataStore::get('settings_api');
}
DataStore::forget('settings_api');
DataStore::forget();
forget(), dosyayı silmez. İstek içindeki değeri unutur ve ortak ayar cache sürümünü yeniler. Normal yazma akışında ayrıca çağrılması gerekmez; set() bunu otomatik yapar.
Güvenlik ve veri tutarlılığı
- Dosya adı bir yol değildir;
/,\,..ve null byte kabul edilmez. - Ayar önbelleği bozulursa dosya gerçek kaynak olarak kullanılmaya devam eder.
- Parola, API anahtarı veya erişim belirteci içeren
Storage/Datadosyalarını public depoya eklemeyin. - Aynı ayar dosyasını doğrudan
File::write()ile değiştirmek yerineDataStore::set()kullanın.