Core/System — Çatının çekirdeği (açılış, yapılandırma, keşif, yol, kayıt, depolama)
Doğrulanan kod tabanı:
d508f5e1(dalfeat/fw-license-master) · Tarih: 2026-10-05 · Yayın: 0.9.7 = bu commit + sonrası; belge yalnız doğrulama anındaki kodu anlatır
Kaynak klasör:Core/System/— 93*.php(+Config/içinde 3README.md). Kökte*.phpyoktur; her dosya altı alt dalın birindedir.
Envanter: 93 php dosyasının 93'ü alt belgelerde anlatıldı (aşağıdaki tablo).
1. Ne işe yarar, kim kullanır
Framework'ün her istekte ilk çalışan ve her katmanın altında duran kodudur. Dört soruya cevap verir: Hangi ortamdayım ve hangi proje? (Kernel, Config), Neyin nerede olduğunu nasıl bulurum? (Paths, Discovery), Bu ada hangi sınıf karşılık gelir? (Registries, Discovery), Geçici/kalıcı dosya verisini nereye yazarım? (Storage).
Bağımlılık iki yönlüdür (ölçüm: Framework\Core\(Base|Database|Http|Render|Routes|Services) geçişi): Core/System içindeki 33 dosya bu altı katmandan birine atıf yapar (en sık Base taban sınıfları — BaseService, BaseConfig, BaseComponent — ve Routes/Services — Route, BootSentinel, PreflightProvider); öte yandan bu katmanların hepsi kendi çözümlerini Core/System (Paths, Discovery, Registries, Storage) üzerinden yapar. Bu yüzden açılış kodu döngüleri isResolving-türü bayraklarla keser (§4).
2. Alt dallar ve belgeleri
| Klasör | *.php |
Belge | Kısa görev |
|---|---|---|---|
Config/ |
22 | Config.md | Config (dosya ayarı), Secrets (sır dosyası + app ortam bayrağı), DB profil çözücüleri |
Discovery/ |
24 | Discovery.md | Ad → sınıf/yol çözümü, modül keşfi, keşif önbellekleri, proje verisi toplama |
Kernel/ |
19 | Kernel.md | Bootstrap, PreBoot, 6 aşamalı Kernel, bekçiler |
Paths/ |
4 | Paths.md | Çatı/proje/modül yol kayıt defteri |
Registries/ |
8 | Registries.md | Ad → sınıf haritası (193 kayıt), takma adlar |
Storage/ |
16 | Storage.md | Dosya tabanlı önbellek, oturum, günlük, trafik, önyükleme önbelleği |
| Toplam | 93 | find Core/System -name '*.php' | wc -l = 93 |
3. Bir isteğin yolu (özet)
index.php → Bootstrap::run()
→ PhpVersionGate (≥ 8.3)
→ PreBoot::orchestrate(): ortam sabitleri (RBN_DEV…) → ProjectDiscovery (BootCache / ProjectDataMapper)
→ Paths::init → APP_VERSION → BootSentinel → vendor/autoload → hızlı varlık
→ KernelFactory::create(): Autoload → ShieldSentinel → DatabaseGuardStage
→ ComponentRegistry → SessionSandboxStage → Routing
→ Route::run() → Kernel::terminate()
Her ok için dosya:satır kanıtı ilgili alt belgededir (Kernel §3).
4. Dallar arası bağımlılık (kodda görülen)
| Kimden → Kime | Nasıl |
|---|---|
Kernel → Config, Paths, Discovery, Storage |
PreBoot Secrets'i erken yükler (app.environment); Paths::init; ProjectDataMapper/BootCacheProvider; SessionSandboxStage → StorageManager::sessions() |
Discovery → Registries, Paths, Config |
NamespaceResolver → SystemRegistry::locate(); Definition::get('database_*') → Config/Definitions/DbProfiles; ProjectDataMapper → DbProfileResolver |
Config → Discovery |
ConfigResolver::resolveContextSurvival → Definition::get(..., 'ENV_FILE'); DatabaseConfig → Definition::get(..., 'KEYS_MAP') |
Paths → Discovery |
FrameworkContext/ProjectContext FolderContext'ten türer; Paths::module() → ModuleDiscoveryDriver |
Storage → Paths, Config (dolaylı) |
tüm sağlayıcılar Paths::project()->… ile dizin bulur |
Döngüsel bağımlılıklar isResolving/$resolving bayraklarıyla kesilir: Config::get, Definition::get, DiscoveryEngine::resolveDiscovery, NamespaceResolver::find, DiscoveryConfigTrait::$isLocating.
5. Tuzaklar (dallar arası, ölçülmüş)
- Yol matrisi tuzağı:
FolderMatrix'te olmayan anahtar yola BÜYÜK harfle yazılır; Windows'ta fark edilmez, Linux üretimde yanlış yol üretir (Paths §5). - Kayıt defterinde 5 ölü kayıt (193 kayıttan):
handlers.storage,handlers.localization,handlers.seo,metadata.KIT_,metadata.SEO_(Registries §5). Config::get()bütünlük bekçisini atlar (Config §5.1).- Ortam kararı (RBN_DEV) istemciye bağlı, DB profili sunucuya bağlıdır: ikisi bilerek ayrıdır; ölçüm tablosu Config §5'te.
- Önyükleme önbelleği düz metin JSON (
<workspace>/.cache) ve proje verisini taşır; TTL'i yoktur (Storage §5).
6. Örnek (gerçek koddan)
// Core/System/Kernel/Base/KernelFactory.php:81-86
$kernel->addStage(new Autoload())->addStage(new ShieldSentinel())->addStage(new DatabaseGuardStage())
->addStage(new ComponentRegistry())->addStage(new SessionSandboxStage())->addStage(new Routing());
7. İlgili belgeler
- Core/Support (sabitler, sözleşmeler, yardımcılar)
- Kavram: mimari harita · Kavram: yapılandırma · Kavram: veritabanı ve kiracılık
- Açık sorular