Proje düzeni ve komutlar
Proje düzeni
CPalius, temiz kök ilkesiyle çalışır: proje kökü çerçeve dosyalarıyla kirlenmez, her şeyin yeri bellidir.
CPalius/
├── cp-core/ çekirdek alanı
│ ├── bin/ konsol ikilisi (console)
│ ├── config/ çekirdek yapılandırması (bundles, active_modules, rotalar)
│ ├── migrations/ çekirdek veritabanı migration'ları
│ ├── src/ App\ ad alanı (Controller, Entity, Core\...)
│ ├── templates/ AACP ve Studio şablonları
│ ├── assets/ panel JavaScript ve CSS kaynakları
│ └── var/ önbellek, günlükler, yedekler (Git'e girmez)
├── cp-includes/
│ └── vendor/ Composer bağımlılıkları
├── cp-content/ sizin alanınız
│ ├── config/sync/ Git ile taşınan YAML yapılandırması
│ ├── modules/ modüller
│ ├── themes/ temalar
│ └── translations/ genel arayüz çevirileri (tr, en)
├── public/ web kökü
│ ├── index.php ön denetleyici
│ ├── assets/ derlenmiş panel varlıkları
│ ├── themes/ temaların yayınlanan çıktıları
│ └── uploads/ yüklenen dosyalar
└── composer.json
Kural: Kendi kodunuz cp-content/ içinde kalır. cp-core/ ve cp-includes/ sistemin; bir modül paketi bunlara yazamaz ya da başvuramaz (paket denetimi bunu reddeder).
Ad alanları
| Ad alanı | Klasör | Kime ait |
|---|---|---|
App\ |
cp-core/src/ |
Yalnızca çekirdek |
Modules\ |
cp-content/modules/ |
Modüller |
DoctrineMigrations\ |
cp-core/migrations/ |
Çekirdek migration'ları |
Bir modül App\ ad alanında sınıf tanımlayamaz; paket denetimi bunu reddeder.
Yapılandırma yönetimi (config sync)
cp-content/config/sync/ altındaki YAML dosyaları, siteyi Git ile taşınabilir kılar:
| Dosya | İçerik |
|---|---|
user.role.<id>.yaml |
Rol ve yetenek listesi |
settings.yaml |
Sistem ayarları |
path_pattern.<tür>.yaml |
İçerik türü için adres kalıbı |
workflow/<ad>.yaml |
Durum makinesi tanımı |
cp:config komutu ayarları ve alanları dışa aktarır, farkı gösterir ve içe aktarır.
Komut listesi
Tüm komutlar php cp-core/bin/console <komut> ile çalışır.
Kurulum ve bakım
| Komut | Ne yapar |
|---|---|
cp:user:create-admin |
İlk yönetici kullanıcıyı oluşturur |
cp:doctor |
Kurulumu denetler: migration, modül, yetenek, çeviri, ortam, güvenlik duruşu |
cp:security:audit |
Çalışan güvenlik yapılandırmasını denetler ve duruş puanı verir |
cp:backup:create |
cp-core/var/backups/ altına veritabanı, dosya ya da tam proje yedeği alır |
cp:update |
Bekleyen migration'ları, güncelleme kancalarını, modül yükseltmelerini ve yapılandırmayı uygular, sonra önbelleği temizler |
cp:patch |
Bekleyen dosya yamasını gösterir, istenirse uygular |
cp:debug |
Kayıt defterlerinin bulduklarını listeler: yetenekler, hook'lar, cron işleri, varlık türleri, alanlar, kaynaklar |
Modüller
| Komut | Ne yapar |
|---|---|
cp:module:list |
cp-content/modules altındaki tüm modülleri ve durumlarını listeler |
cp:module:create |
Yeni modül iskeleti üretir (manifest, kurulumcu, çeviriler) |
cp:module:activate <Ad> |
Modülü doğrular ve active_modules.php dosyasına ekler |
cp:module:deactivate <Ad> [--purge] |
Modülü devre dışı bırakır; --purge ile kaldırma kancasını çalıştırıp verisini siler |
Etkinleştirme, modülü almadan önce izole bir süreçte derleme ve YAML denetimi yapar; geçemezse modül etkinleşmez.
Zamanlama ve kuyruk
| Komut | Ne yapar |
|---|---|
cp:cron:run |
Vadesi gelen tüm cron işlerini çalıştırır (veritabanı + kod tabanlı) |
cp:cron:run-virtual <ad> |
Kod tabanlı (öznitelik ya da dosya) bir sanal cron işini adıyla çalıştırır |
cp:queue:work |
Vadesi gelen asenkron işleri yalıtılmış olarak işler |
Veri
| Komut | Ne yapar |
|---|---|
cp:migrate |
Veri içe aktarmalarını listeler, deneme çalıştırır, uygular, geri alır |
cp:config |
Ayarları ve alanları dışa aktarır, fark alır, içe aktarır |
cp:seo:rebuild-sitemap |
Eksik SEO varsayılanlarını ekler ve site haritası önbelleğini temizler |
Modül komutları
Bazı modüller kendi komutlarını getirir; örneğin Belgeler modülünden cp:docs:import ve cp:docs:export, Blog modülünden cp:blog:seed-demo-content.
Geliştirme sırasında yararlı üçlü
php cp-core/bin/console cp:debug # sistem neyi buldu?
php cp-core/bin/console cp:doctor # sistem sağlıklı mı?
php cp-core/bin/console cache:clear # önbelleği temizle
Geliştirme ortamında (APP_ENV=dev) bir istek aynı sorguyu çok kez çalıştırırsa N+1 koruması istisna fırlatır; bu bilinçli bir davranıştır ve fetch join yazmanız gerektiğini söyler.