KKUT Docs

KUT Framework

KUT’un çok projeli mimarisini, çalışma modelini ve temel tasarım kararlarını tanıyın.

KUT Framework, birden fazla PHP uygulamasını aynı çekirdek üzerinde açık sınırlarla geliştirmek için hazırlanmış katmanlı bir uygulama tabanıdır. Çekirdeği uygulama kodundan ayırır; ortak bileşenleri tekrar etmeden paylaşmanızı sağlar.

Temel ilkeler

  • Tek çekirdek: Framework kodu System/ altında bir kez bulunur.
  • Çoklu proje: Bağımsız veya iç içe uygulamalar Projects/ altında çalışır.
  • Ortak bileşenler: Birden fazla projeye hizmet eden kod Common/ altında tutulur.
  • Dosya tabanlı Rendering: Wizard görünümleri derlenerek güvenli önbellek dosyalarından çalıştırılır.
  • Tek dağıtım modeli: Çekirdek, ortak bileşenler ve projeler aynı KUT dizin yapısı içinde çalışır.

İstek yaşam döngüsü

HTTP isteği
  → kut.php
  → proje seçimi
  → route çözümleme
  → controller / method
  → model ve kütüphaneler
  → Wizard Rendering
  → HTTP yanıtı

Alan adı ile proje eşleşmesi Settings/Projects.php üzerinden yapılır. Controller yöntemi açıkça farklı bir görünüm seçmediğinde KUT, controller ve yöntem adından varsayılan görünümü otomatik belirler.

Alan adı ve güvenilen vekiller

Proje seçimi ve bağlantı üretimi çekirdekteki Kut\Base::host() okuyucusunu kullanır. Host küçük harfe çevrilir; çevresindeki boşluk, son nokta ve port çıkarılır. Köşeli parantezli IPv6 adresleri desteklenir. Geçersiz veya 253 karakteri aşan alan adı boş sonuç verir; alan adı eşlemesi varsayılan projeye düşer. Haritada bulunmayan ana makinelerde /Proje/ yoluyla proje seçimi desteklenir.

// Settings/Projects.php — directory ve containers ile aynı seviyede
'trustedProxies' => [],

Boş listeyle X-Forwarded-Host okunmaz; kaynak sırası HTTP_HOST, SERVER_NAME, SERVER_ADDR olur. Listeye yalnız denetiminizdeki vekillerin IPv4/IPv6 adreslerini veya CIDR ağlarını yazın. Açık bir liste tek başına yeterli değildir: web sunucusu gerçek bağlantı adresini PHP'ye CONN_REMOTE_ADDR sunucu değişkeni olarak aktarmalıdır. Bu değer istemci başlığından üretilmemelidir. Sunucu değeri eksikse veya listede eşleşmiyorsa XFH kullanılmaz. mod_remoteip istemci adresini değiştirebildiği için REMOTE_ADDR doğrudan vekil kimliği olarak kullanılmaz.

Güvenilen son vekil XFH ve XFP başlıklarını temizleyip kendi doğruladığı değeri yazmalı veya listenin sağına eklemelidir. KUT bu koşulda en sağdaki değeri kullanır. XFF adres zinciri sağdan sola işlenir, ilk güvenilmeyen adreste durulur; daha soldaki istemci değerlerine güvenilmez. Geçersiz IP içeren zincir bütünüyle reddedilir. Başlığı olduğu gibi geçiren vekili güven listesine eklemeyin. CLI vekil başlıklarını kullanmaz.

Base::clientIp(), çekirdek Request okuyucusu ve Authentication IP okuyucusu aynı politikayı kullanır. Güvenilen vekil yoksa istemci IP'si sunucunun REMOTE_ADDR değeridir; Client-IP ve Forwarded başlıkları IP kaynağı değildir. Base::isHttps() ve oturum çerezleri yerel HTTPS/443 bilgisini kullanır; yalnız güvenilen soket vekilinde XFP'nin sağdaki https değeri de kabul edilir. Authentication IP yöntemine açık boş vekil listesi vermek, o çağrı için başlıkları kapatır. Apache mod_remoteip tarafından doğrulanmış REMOTE_ADDR korunur; çifte IP çözümlemesi yapılması için ayrıca vekil kimliği gerekir.

Base::host() mevcut ana alan adı eşlemesinde www. önekini korur veya ekler; çekirdeğin proje eşlemesi öncesindeki ham okuyuşu Base::host(false) bu işlemi uygulamaz. Host, host tabanlı kriptografik anahtar türetiminde de kullanıldığından alan adı kimliğini dağıtım boyunca sabit tutun. Web sunucusu bilinmeyen Host değerlerini uygulamaya ulaşmadan reddetmelidir; varsayılan site/catch-all veya vekil ayarlarını değiştirirken bu sınırı yeniden değerlendirin.

Çalışma gereksinimleri

BileşenGereksinim
PHP8.1 veya üzeri
Web sunucusuApache veya Nginx
BağımlılıklarSystem/Vendor ile birlikte
SürümKUT 1.0.0 ile başlar
KUT Framework 1.0Katmanlı Uygulama Tabanı

Kur. Uyarla. Türet.