- Konu sahibi
- #1
CodeIgniter, PHP ile web uygulaması geliştirmeyi düzenleyen açık kaynaklı bir web framework’üdür. PHP’nin kendisi değildir; PHP üzerinde çalışan, yönlendirme, controller, model, view, form işlemleri ve veritabanı erişimi gibi tekrarlanan işleri daha düzenli yapmanızı sağlayan bir uygulama çatısıdır.
Saf PHP’de URL kontrolü, dosya organizasyonu, form doğrulama ve veritabanı sorgularını kendiniz yapılandırırsınız. CodeIgniter ise bu işleri belirli klasörler ve sınıflar üzerinden ayırarak projenin büyüdükçe daha kolay yönetilmesini amaçlar.
Aşağıdaki klasör yapısı CodeIgniter 4 yaklaşımını esas alır. CodeIgniter 3 örnekleri aynı dosya ve API düzeniyle doğrudan uygulanmaz. HTML sayfası üreten bir isteğin yaygın akışı şöyledir:
Örneğin bir haber listesini göstermek için controller doğrudan SQL yazıp HTML üretmek yerine modelden haberleri ister, ardından view dosyasını bu verilerle çağırır. Böylece veritabanı sorgusu ile sayfanın görünümü birbirinden ayrılır.
CodeIgniter seçiminin anlamını görmek için iki yaklaşımı karşılaştırmak yararlıdır.
CodeIgniter her proje için zorunlu değildir. Tek sayfalık veya birkaç dosyalık bir script için saf PHP daha basit olabilir. Birden fazla sayfa, kullanıcı girişi, yönetim paneli, form işlemleri ve veritabanı bulunan projelerde ise framework kullanmak tekrar eden kodları ve dağınık dosya yapısını azaltabilir.
Tipik bir CodeIgniter projesinde uygulama kodları görevlerine göre ayrılır. Kavramsal olarak yapı şu şekilde düşünülebilir:
Bu örnekte
Hayır. Namespace, klasör yapısı ve birçok API farklıdır. Eski örneğin hangi sürüme ait olduğunu belirleyip kullanılan sürümün geçiş belgeleriyle karşılaştırın. Aynı sınıf adını kopyalamak tek başına uyarlama sayılmaz.
Web kökü public klasörüne yöneltilmelidir. Uygulama kodu ve yapılandırma içeren proje kökünü herkese açık dizin yapmayın. Public klasörü giriş dosyasını ve herkese açık varlıkları taşır; writable ise log, önbellek ve benzeri yazılabilir veriler içindir.
Saf PHP’de URL kontrolü, dosya organizasyonu, form doğrulama ve veritabanı sorgularını kendiniz yapılandırırsınız. CodeIgniter ise bu işleri belirli klasörler ve sınıflar üzerinden ayırarak projenin büyüdükçe daha kolay yönetilmesini amaçlar.
CodeIgniter nasıl çalışır?
Aşağıdaki klasör yapısı CodeIgniter 4 yaklaşımını esas alır. CodeIgniter 3 örnekleri aynı dosya ve API düzeniyle doğrudan uygulanmaz. HTML sayfası üreten bir isteğin yaygın akışı şöyledir:
- Kullanıcı bir URL’ye istek gönderir.
- Router bu URL’nin hangi controller ve metoda yönlendirileceğini belirler.
- Controller isteği işler; gerekiyorsa modelden veri alır.
- Veri katmanı gerekiyorsa model ilgili işlemleri yürütür.
- Controller elde edilen veriyi view dosyasına aktarır.
- View, kullanıcıya gönderilecek HTML çıktısını üretir.
Örneğin bir haber listesini göstermek için controller doğrudan SQL yazıp HTML üretmek yerine modelden haberleri ister, ardından view dosyasını bu verilerle çağırır. Böylece veritabanı sorgusu ile sayfanın görünümü birbirinden ayrılır.
Saf PHP ile CodeIgniter arasındaki fark
CodeIgniter seçiminin anlamını görmek için iki yaklaşımı karşılaştırmak yararlıdır.
| Konu | Saf PHP | CodeIgniter |
|---|---|---|
| Dosya düzeni | Geliştirici belirler | Framework yapısına göre düzenlenir |
| URL yönlendirme | Elle kurulabilir | Router üzerinden tanımlanır |
| Veritabanı erişimi | PDO veya mysqli ile ayrıca yazılır | Model ve veritabanı katmanlarıyla düzenlenir |
| Büyüyen projeyi yönetme | Kurallar geliştiriciye bağlıdır | Ortak yapı sayesinde daha öngörülebilirdir |
Somut proje yapısı örneği
Tipik bir CodeIgniter projesinde uygulama kodları görevlerine göre ayrılır. Kavramsal olarak yapı şu şekilde düşünülebilir:
Kod:
app/
├── Controllers/
│ └── Haberler.php
├── Models/
│ └── HaberModel.php
└── Views/
└── haberler/liste.php
Bu örnekte
Haberler.php gelen isteği karşılar, HaberModel.php haber verilerini alır ve liste.php sonucu HTML olarak gösterir. Gerçek klasör ve sınıf adları kullanılan CodeIgniter sürümünün proje yapısına göre kontrol edilmelidir; framework dosyalarını rastgele değiştirerek başlamak yerine uygulama klasörlerinde çalışmak gerekir.CodeIgniter kullanmaya karar verirken
- Projenin yalnızca birkaç PHP dosyasından mı oluşacağını, yoksa büyüyen bir uygulama mı olacağını belirleyin.
- URL yönlendirme, form doğrulama, oturum, veritabanı ve şablon işlemlerinin tekrar edip etmeyeceğini değerlendirin.
- MVC yaklaşımını ve framework’ün klasör yapısını öğrenmeden doğrudan mevcut projeye kod taşımayın.
- Önce tek bir sayfa için controller, model ve view ayrımını kurun; ardından ortak işlemleri genişletin.
- Kullandığınız PHP ve CodeIgniter sürümleriyle uyumlu resmî kurulum ve yükseltme belgelerini kontrol edin.
Sık sorulan sorular
CodeIgniter 3 kodunu CodeIgniter 4 projesine doğrudan koyabilir miyim?
Hayır. Namespace, klasör yapısı ve birçok API farklıdır. Eski örneğin hangi sürüme ait olduğunu belirleyip kullanılan sürümün geçiş belgeleriyle karşılaştırın. Aynı sınıf adını kopyalamak tek başına uyarlama sayılmaz.
CodeIgniter 4’te web sunucusu hangi klasörü sunmalı?
Web kökü public klasörüne yöneltilmelidir. Uygulama kodu ve yapılandırma içeren proje kökünü herkese açık dizin yapmayın. Public klasörü giriş dosyasını ve herkese açık varlıkları taşır; writable ise log, önbellek ve benzeri yazılabilir veriler içindir.