JekCMS ticari lisanslı bir yazılımdır; ancak bileşenlerinin bir kısmı açık kaynak lisansları altında yayınlanmaktadır. Temel yönlendirme motoru, veritabanı soyutlama katmanı ve şablon etiket sistemi MIT lisansı kapsamında GitHub'da mevcuttur. Yönetim paneli, tema pazarı ve lisanslama sistemi tescillidir.
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): ?arraytum meta alanlariyla tek gonderiyi getirirget_posts(array $args): arraykriterlere uyan gonderileri getirirthe_title(?int $id): stringmevcut veya belirtilen gonderinin basligini dondururthe_content(?int $id): stringkisa kodlar islenmis olarak icerigi dondururget_categories(array $args): arrayistege bagli hiyerarsi ile kategorileri dondururget_partial(string $name, array $data): stringgecirilen verilerle sablon parcasini islerget_setting(string $group, string $key): mixedbir site ayari degerini alirsite_url(string $path): stringgoreli 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.