Bilgi Birikimi.
Sistem Yürütme Döngüsü
Titan V4'ün önyükleme süreci deterministik bir dizidir. Web sunucusunun `public/index.php` dosyasını tetiklemesiyle başlar ve `App` örneği uyandırılır.
`App` sınıfı Katı Singleton (Strict Singleton) desenini kullanır. `run()` sırasında sırasıyla Session başlatılır, yapılandırmalar yüklenir, Dil (Locale) tespit edilir ve Router çalışma ortamına bağlanır.
| Pattern | Strict Singleton (Thread-Safe) |
| Initialization | Lazy Loading (getInstance) |
| Binding | Application Interface v1.0 |
public function run(): void { // Step 1: Initialize Persistent Storage Session::start(); // Step 2: Protocol Detection (Locale Matrix) Lang::load(); // Step 3: Route Registry & Dispatch Matrix require CONFIG_PATH . '/routes.php'; Router::dispatch(); }
Anlık Dil Değişimi
Yerelleştirme oturum bazlıdır. `Lang::load()` Session içindeki `locale` anahtarına bakar; yoksa varsayılan TR yüklenir ancak `/lang/{locale}` rotasıyla veri kaybı olmadan anında değiştirilebilir.
Method Overriding Mantığı
`Router::dispatch()` çağrısı "Geri Dönüşü Olmayan Nokta"dır. Uygulamanın hangi parçasının çalıştırılacağını belirlemek için global sunucu değişkenlerini yakalar.
Yönlendirme Matrisi
IEF'de yönlendirme sadece yol eşleştirme değildir; karmaşık bir Regex yorumlama sistemidir. Method Overriding desteği ile tarayıcıların PUT ve DELETE göndermesine olanak tanır.
`{id}` gibi değişkenler `preg_match` ile yakalanır. Sistem, PHP Reflection kullanarak bu parametreleri sıfır yapılandırma ile doğrudan Controller metodlarınıza enjekte eder.
| Engine | PCRE Regex v2.0 |
| Injection | PHP Reflection API |
| Protocols | GET, POST, PUT, DELETE, PATCH |
protected static function convertToPattern(string $uri): string { $pattern = preg_quote($uri, '#'); foreach (self::$patterns as $placeholder => $regex) { $pattern = str_replace(preg_quote($placeholder, '#'), $regex, $pattern); } $pattern = preg_replace('#\\\\\{([a-zA-Z0-9\_]+)\\\\\}#', '([^/]+)', $pattern); return '#^' . $pattern . '$#'; }
Method Overriding Mantığı
Eğer bir POST isteği `_method` alanı (veya `X-HTTP-Method-Override` başlığı) içeriyorsa, Router çalışma anında isteği PUT veya DELETE olarak yeniden tanımlar.
Titan Direktif Motoru
Ayna (View) yorumlamaz; derler. `.php` dosyalarını tarar, IEF direktiflerini tespit eder ve bunları saf, optimize edilmiş PHP kodlarıyla değiştirir.
Her `{{ }}` ifadesi `htmlspecialchars` ve `?? ""` boşluk operatörü ile sarmalanır. Bu, null bir değişken gönderilse bile arayüzün asla çökmemesini (Null-Safety) sağlar.
| Strategy | Static Compilation (Pre-Eval) |
| Safety | HTML Entities + Null Coalescing |
| Performance | Native Opcache Compatible |
$directives = [ '/(? => '<?php echo htmlspecialchars($1 ?? ""); ?>', '/(? => '<?php \App\Core\View::setLayout(\'$1\'); ?>', ];
Eval Bağlamı
Derlenen içerik `eval()` ile yürütülür. Yürütme öncesi tüm veriler `extract($data)` ile dizi anahtarlarından canlı değişkenlere dönüştürülür.
Obsidian ORM Mimarisi
Obsidian akıcı bir sorgu oluşturucudur (Fluent Query Builder). "Tembel İnşa" (Lazy Building) kullanır; sorgular bellekte hazırlanır ve sadece `get()` veya `first()` gibi sonlandırıcılar çağrıldığında çalışır.
Her `where()` çağrısı dahili bir diziye ekleme yapar. SQL sorgusu, maksimum performans için sadece son milisaniyede inşa edilir.
| Architecture | Active Record + Fluent Builder |
| Primary Key | UUID v4 / AUTO_INCREMENT |
| Safety | Prepared Statements (PDO Bound) |
public function where(string $column, $value, string $operator = '='): self { $this->wheres[] = "{$column} {$operator} ?"; $this->params[] = $value; return $this; }
UUID Üretim Mantığı
Eğer `$useUuid` aktifse, `Model::create()` metodu veritabanına INSERT komutu gitmeden önce `Symfony/Uid` kullanarak RFC 4122 uyumlu bir UUID oluşturur.
Controller ve Protokol Mantığı
Controller'lar sadece mantık havuzu değil, korumalı düğümlerdir. Temel sınıftan türetilerek basitleştirilmiş Response ve Validation sarmalayıcılarına erişim kazanırlar.
protected function view(string $view, array $data = []): Response { $data['authUser'] = $this->user; $data['csrf_token'] = Session::getCsrfToken(); ... }
Bağımlılık Enjeksiyonu
Router metod parametrelerinizi analiz eder. Eğer bir `Request` tip belirteci görürse, Reflection üzerinden singleton Request örneğini otomatik olarak enjekte eder.
Sistem Düğüm Matrisi
Sistem dengesini sağlayan diğer hayati organlar:
İstek Keşfi
JSON veri paketlerini otomatik algılar ve girdi akışına dahil eder. HTMX protokol desteği çekirdekten gelir.
Oturum Entropisi
CSRF tokenlarını ve flaş mesajları yönetir. Tokenlar, replay saldırılarını önlemek için her durum değiştiren istekte yenilenir.
Log Bütünlüğü
Atomik log dosyaları yazar. DEBUG, INFO, ERROR seviyelerini destekler. Günlük bazda saklanır.