TR EN
← Sıfıra Dön

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.PHP / INDEX.PHP
Singleton Yürütme

`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.

ROUTER.PHP
Regex Parametre Yakalama

`{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.

VIEW.PHP
Direktif Derleme Hattı

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.

MODEL.PHP
Akıcı Arayüz

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.