Yönlendirme motoru (src/Router/) URL eşleştirmeyi, parametre çıkarımını, ara katman zincirlemesini ve rota derlemesini yönetiyor. Her istekte regex eşleştirmeyi önlemek için cache/routes.php'de depolanan derlenmiş bir rota önbelleği kullanıyor — 50 kayıtlı rotaya sahip bir sitede bu, yönlendirme ek yükünü yaklaşık 0,8 ms'den istek başına 0,1 ms'nin altına indiriyor. Kaynak MIT lisansı altında github.com/jekcms/router'da yayımlanmış ve harici katkılar kabul ediliyor.

Veritabanı Soyutlama: Tasarım Gereği PDO'ya Yakın

Veritabanı soyutlama katmanı (src/Database/) PDO etrafında ince bir sarmalayıcı. Adlandırılmış parametre bağlama, hata ayıklama için sorgu günlüğü, bağlantı havuzu yönetimi ve bir işlem yardımcısı ekliyor. ORM olmaya çalışmıyor — sorgular SQL'de yazılıyor. Bir soyutlama katmanı eklemek yerine PDO'ya yakın kalma tasarım kararı kasıtlı: SQL okunabilir, hata ayıklanabilir ve bir sorgu oluşturucu sözdizimi öğrenmeyi gerektirmiyor. Kaynak github.com/jekcms/database'de.

Şablon Etiketi Sistemi: ~60 Fonksiyon, Kararlı API

Şablon etiketi sistemi (src/TemplateTags/) tema şablonlarında kullanılan fonksiyonları sağlıyor: get_post(), the_title(), get_categories(), get_partial() ve yaklaşık 60 tane daha. Fonksiyon imzaları ve dönüş türleri kamuya açık API başvurusunda belgelenmiş ve büyük bir sürüm içinde kararlı olduğu garanti ediliyor. Şablon etiketlerinde kırılgan değişiklikler yeni bir büyük sürüm ve en az altı aylık kullanımdan kaldırma süresi gerektiriyor. Kaynak github.com/jekcms/template-tags'de.

Tescilli Kalan Kısımlar ve Neden

Yönetim paneli, tema pazarı bağlayıcısı ve lisanslama sistemi tescilli ve kapalı kaynaklı. Bu bileşenler üzerinde yapılan değişiklikler ticari bir anlaşma gerektiriyor.

Ayrım pratik: açık kaynak bileşenler herhangi bir geliştiricinin üzerine inşa edebileceği altyapı; tescilli bileşenler JekCMS'in sattığı bitmiş ürün. Açık kaynak bileşenleri, JekCMS lisansı satın almadan kendi projelerinizde MIT lisansı altında kullanabilirsiniz. Bu çerçeve, JekCMS ekosisteminin genişlemesine destek olurken sürdürülebilir ticari modeli koruyor.

Yonlendirici: Mimari ve Performans

Yonlendirme motoru kayitli rotalari cache/routes.php adresinde tek bir PHP dosyasina derler. Bu derlenmis dosya, statik rotalar icin regex eslestirmesini tamamen onleyen bir switch-case agacidir. Parametreli dinamik rotalar icin derleyici, HTTP yontemine gore gruplandirilmis optimize regex kaliplari uretir. 50 rotali bir sitede derlenmis yonlendirici bir URL'yi 0,1ms altinda cozer. Derleme olmadan ayni cozunurluk 0,8ms surer.

Ara Katman Zincirleme

Ara katman fonksiyonlari rota isleyicisinden once sirayla calisir. JekCMS yonlendiricisi hem global ara katmani hem de rotaya ozel ara katmani destekler. Rota gruplari ortak prefix ve ara katman tanimlamayi kolaylastirir. Ara katman yigini derleme zamaninda cozulur, bu nedenle ara katman cozumlemesi icin istek basina ek yuk yoktur.

Veritabani Katmani: Sorgu Gunlugu ve Islemler

Sorgu gunlugu bir istek sirasinda her SQL sorgusunu, parametrelerini ve yurutme suresini kaydeder. Gelistirme modunda yonetim arac cubugu tum sorgulari yurutme sureleriyle gosterir, N+1 sorgu sorunlarini belirlemeyi kolaylastirir. Islem yardimcisi istisna durumunda otomatik geri alma yapar.

Baglanti Havuzu Yonetimi

Veritabani katmani istek yasam dongusu boyunca PDO baglantilerini yeniden kullanan bir baglanti havuzu surdurur. Istek basina birden fazla veritabani islemi calistiran siteler icin bu, her sorgu icin yeni baglanti kurma ek yukunu ortadan kaldirir. Baglanti havuzlama, 15+ sorgusu olan sayfalarda toplam istek suresini 8-12ms azaltir.

Sablon Etiketleri: Yaygin Fonksiyonlar

En sik kullanilan sablon etiketleri:

  • get_post(int $id): ?array tum meta alanlariyla tek gonderiyi getirir
  • get_posts(array $args): array kriterlere uyan gonderileri getirir
  • the_title(?int $id): string mevcut veya belirtilen gonderinin basligini dondurur
  • the_content(?int $id): string kisa kodlar islenmis olarak icerigi dondurur
  • get_categories(array $args): array istege bagli hiyerarsi ile kategorileri dondurur
  • get_partial(string $name, array $data): string gecirilen verilerle sablon parcasini isler
  • get_setting(string $group, string $key): mixed bir site ayari degerini alir
  • site_url(string $path): string goreli yoldan mutlak URL uretir

Acik Kaynak Bilesenlere Katkida Bulunma

Harici katkilar GitHub pull request'leri araciligiyla kabul edilir. Katki kilavuzlari sunlari gerektirir:

  • Tum yeni fonksiyonlar parametre turleri ve donus turleriyle PHPDoc aciklamalari icermelidir
  • Hata duzeltmeleri icin birim testleri gereklidir
  • Buyuk surum icinde mevcut fonksiyon imzalarinda kirilma degisikligi yasaktir
  • Kod stili JekCMS kural seti ile PHP-CS-Fixer'i gecmelidir

En degerli katkilar karsilastirmali performans iyilestirmeleri, regresyon testli hata duzeltmeleri ve dokumantasyon gelistirmeleridir. Ozellik istekleri, projenin PHP ve PDO'ya yakin kalma tasarim felsefesiyle uyumu saglamak icin uygulamadan once GitHub Issues'da tartisilir.

Acik Kaynak Bilesenleri Bagimsiz Kullanma

JekCMS'in MIT lisansli bilesenleri, tam bir JekCMS kurulumu olmadan da bagimsiz projelerinizde kullanilabilir. Ornegin yonlendirme motorunu Composer ile kendi mikro framework'unuze entegre edebilir, veritabani katmanini mevcut PHP uygulamaniza ekleyerek sorgu gunlugu ve baglanti havuzu ozelliklerinden yararlanabilirsiniz.

Sablon etiket sistemini ise kendi tema mimarinizin temeli olarak kullanabilirsiniz. Her bilesen bagimsiz calisacak sekilde tasarlanmistir; birini uygulamak icin digerlerine ihtiyac duymazsiniz. Composer paket yoneticisi uzerinden jekcms/router, jekcms/database veya jekcms/template-tags paketlerini yukleyerek hemen kullanmaya baslayabilirsiniz. Her paketin kendi README dosyasinda kurulum adimlari, yapılandirma secenekleri ve ornek kullanim senaryolari detayli bicimde aciklanmistir.

Lisanslama Modeli ve Topluluk Iliskisi

JekCMS'in acik kaynak ve tescilli bilesen ayrimi, hem gelistirici toplulugunun buyumesini hem de projenin surdurulebilirligini saglamak amaciyla tasarlanmistir. Acik kaynak bilesenler, gelisitiricilerin JekCMS ekosistemine guven duymasini ve kendi projelerinde ozgurce kullanabilmesini saglar.

Tescilli bilesenler ise JekCMS ekibinin surekli gelistirme, destek ve yeni ozellik sunmaya devam etmesi icin gerekli gelir kaynagini olusturur. Bu denge sayesinde acik kaynak toplulugu buyurken ticari surdurulebilirlik de korunur.

Gelisitriciler, acik kaynak bilesenlerde buldukları hatalari raporlayarak veya performans iyilestirmeleri onererek projeye aktif katkida bulunabilir. JekCMS ekibi her ceyrek donemde topluluk katkilarini degerlendiren bir rapor yayinlayarak seffaflik saglar ve en degerli katkilari odul programi cercevesinde tanir. Topluluk forumunda yapilan tartismalar, yol haritasinin sekillendirilmesinde dogrudan etkili olmaktadir.