Erhan Yakut Software Developer @Binalyze | Founder @Passwall | Golang Enthusiast | Open Sorcerer

Codeigniter Klasörlerini Tanıyalım

2 min read

Önce Codeigniter konusunda temel bir açıklama yaptık. Ardından kurulumunu ve ilk ayarlarını gördük. Şimdi ise bu meşhur PHP anaçatısının klasörlerini tanıyalım.

system Dizini

Codigniter Klasörleri
Her şeyden önce system dizinindeki içinde 11 adet klasöre dikkatimizi verelim. Buradaki application klasörü bizim projemiz için oluşturacağımız dosyaların bulunacağı klasör. Diğer klasörler ise Codeigniter’ın temel yapısını oluşturan dosyaların bulunduğu klasörler. Kısacası application dışındaki klasörlerle genel olarak hiç işimiz olmayacak.

application Dizini

Codigniter Klasörleri
Gelelim bizi asıl ilgilendiren application klasörüne. Resimde gördüğünüz gibi burada 9 adet klasör bulunmaktadır. Bu klasörlerin (config ve error hariç) içleri genel olarak boştur. Yani doldurmak bize kalmış. Şimdi önem sırasına göre klasörleri incelemeye başlayalım.

config: Bu klasör ve içindeki dosyalar sistemin olmazsa olmazıdır. Porjemizle ilgili bütün ayarları bu klasörden yaparız. Hatırlarsanız kurulum ve ilk ayarlar konulu yazımda dizin ve veritabanı ayarını yapmak için buradaki bazı dosyaları güncellemiştik. İşte bu tür bir çok ayar dosyası mevcuttur config dizininde; kendiliğinden başlatılacak uygulamalar (autoload.php), önceden tanımlı sabit değerler (constants.php), projenin url yapısını belirleyeceğimiz ayarlar (routes.php) vb. Buradaki dosyaları zamanla, yeri geldikçe işleyeceğiz.

controller: Controller’ın ne olduğu konusunu MVC’den bahsederken incelemiştik. Kısacası gemimizin kaptanı diyebiliriz. Şöyle özetleyeyim meseleyi, Codeigniter ile hazırlayacağımız projelerin üç önemli unsuru vardır. Controller, Model ve View (MVC) dosyaları. Bunlara bir de ek olarak config (ayar) dosyalarını sayabiliriz. İşte bu MVC dosyalarından Controller’lar vazgeçilmez olanıdır çünkü sistemin nasıl çalışacağına bu dosyalar karar verir. Model ve View dosyaları olmadan da sadece Controller dosyası ile sistemimiz çalışır.

view: Controller dosyaları farklı dosyalardan elde etmiş olduğu verileri View dosyaları ile ekrana yansıtır. Buradan çıkarmamız gereken sonuç View klasörüde bulunacak olan dosyaların HTML ve CSS dillerini barındıracağıdır.

model: Controller dosyalarının bir numaralı veri kaynağı Model dosyalarıdır. Örnek vermek gerekirse veritabanından verilerin alınma işi Model dosyalarına, bu verileri görüntüleme işi View dosyalarına ve aradaki bağı sağlama işi de Controller dosyalarına aittir.

Codigniter Klasörleri

Not: Sadece yukarıdaki klasörlerden faydalanarak çok iyi performansa sahip büyük projeler oluşturabilirsiniz. Buradan sonraki klasörler ikinci derecede önceliklidirler ve önem seviyeleri hemen hemen aynı diyebilirim.

errors: Sistemde oluşacak hataların yönlendirileceği dosyalar burada bulunur.

helpers: Codeigniter’ın kendi yapısında bir takım yardımcı (helper) uygulamalar vardır. Bunlara ekleme yapmak isterseniz bu klasörden faydalanabilirsiniz.

hooks: Codeigniter’ın mevcut fonksiyonlarının farklı bir şekilde çalışmasını istiyorsanız hazırlayacağınız uygulamaları burada oluşturabilirsiniz.

language: Çok dilli sistemler için oluşturacağınız dil dosyalarını buraya eklemelisiniz.

libraries: Sistemi daha da güçlendirmek için yazacağınız kütüphaneleri bu klasörde bulundurmalısınız.

Daha önce kullanmış olduğum aşağıdaki resmi klasörlerin ve çalışma mantığının anlaşılmasına faydası olacağını düşünerek tekrar eklemeye karar verdim. Umarım artık daha anlaşılır bir resimdir.

Codeigniter Çalışma Mantığı

Diğer Dosyalar

Codigniter Klasörleri
Peki ya projelerimizde kullanacağımız resimler, javascript ve css dosyaları gibi ek öğeler nerede bulunacak diye sorabilirsiniz. Bu klasörler ana dizinde system ile aynı seviyede bulunmalıdırlar. View dosyalarımızın içinden de basit bir şekilde bu dosyaları çağırabiliyoruz. Zaten ilerde örneklerini vereceğim.

Özet ve Sonuç

Bu yazımızın konusu Codeigniter’ın klasörleriydi. Anafikir ise system/application içindeki config, controller, view ve model klasörlerinin projelerimiz için çok önemli ve hatta yeterli olduğu, diğer klasörlerin ise çok daha ileri seviyelerde kullanılabileceğidir.

Codeigniter konusunda temel konuları bitirince daha ileri seviyede ve uygulamaya yönelik makaleler yazacağım. Bu konuda istekte bulunan arkadaşlar için bu notu düşüyorum ve birazcık daha sabretmelerini diliyorum.

Umarım bu makale Codeigniter’a ilk bakıştaki karmaşıklığı biraz olsun sadeleştirmiştir. En kısa zamanda tekrar görüşmek dileğiyle.

Not: Codeigniter konusunda Codeigniter Türkiye (www.codeigniter.gen.tr) sitesini de tavsiye ederim. Oldukça güzel hizmet vermekteler.

Erhan Yakut Software Developer @Binalyze | Founder @Passwall | Golang Enthusiast | Open Sorcerer

28 Replies to “Codeigniter Klasörlerini Tanıyalım”

  1. Sanki fazla yavaş gidiyorsunuz.
    Php echo yu 2-3 yazıda anlatmak gibi birşey oluyor sizinki. Frameworklerle uğraşan adam php bilgisi zaten vardır. Bu kısımları tek yazıda anlatıp daha önemli konulara geçilse çok daha iyi olur düşüncesindeyim.
    Bunu kendim için değil(orta derece CI biliyorrum) frameworklere yeni başlayacaklar için söylüyorum . Bu kadar yavaş giderse baya sıkılırlar bence. Kolay gelsin

    1. @Tuncay, eleştirini anlıyorum. Madem gerçekten o kadar yavaş biraz daha hızlanmaya çalışayım. Teşekkürler yorumun için.

  2. Bence de biraz yavaş ilerleniyor gibi :) Sanki documentation taze okunup çevrilmiş havası veriyor konunun gidişatı. Daha uzun yazmaya vaktiniz olur inşallah, bol bol faydalanırız.

    1. @Enes, öncelikle bunları dokümantasyona bakıp yazmadığımı bilmeni isterim. Zaten o kadar vaktim yok :) Benim asıl yapmak istediğim derhal projelere başlamak ve teknikleri üzerinde tartışmak. Yani ileri seviye yazmak istiyorum ama o zaman da henüz yeterli bilgisi olmayan arkadaşlardan gelecek soru bombardımanından korkuyorum. 4 yıldır bu olayı fazlasıyla yaşadığım için böyle yavaş yavaş gidiyorum. Daha sonra gelen soruları ilgili makaleyi okumak üzere yönlendiriyorum, temiz oluyor :)

  3. abi emeğine sağlık. Benim sormak istediğim ileri derecede php bilen birisi CI ‘ya nekadar sürede hakim olacak seviyeye gelir (Biliyorum benim çalışmama bağlı :) ama en azından siz kendinizden örnek verirseniz sevinirim.)

    1. @Serkan, oldukça kısas bir zaman diyebilirim. Belki 2 belki 5 gün ama gerçekten bir keç alışınca insan bir daha bırakamıyor ;)

      @gevv, bende sevindim :)

  4. Peki o zaman bende CI öğreneceğim. Gerçi zaten daha önce biraz bakmıştım ama sizinde önemle üzerinde durduğunuz için şimdi gerçekten başlıyorum :) . Peki CI ile her türlü (büyük bir proje mesela) proje yapabilirmiyiz?

  5. Öncelikle şöyle bir yazı nasıl olur: Neden codeigniter? Php yazmaktan farkı nedir ? Tek fark daha düzenli olması mı ? Kimler kullanmalı ? Yılda 1 site yapan adam var günde 1 site yapan adam var.Birisi 1 yıl uğraşıyor özeniyor bözeniyor diğeri baştan savma yapıp geçiyor.Codeigniter hangi adam için daha kullanışlı olur ? Basit bir üyelik uygulamasının php deki karşılığını biliyoruz,yaparız.Bize buradaki yapılışını gösterebilir misin? Çok mu şey istiyorum :)

    1. @Recep isteğinde haklısın ama bence bu soruların cevabını Codeigniter kullanmaya başladıktan sonra kendin çok daha net ve açık bir şekilde verebilirsin. Bu nedenle bende sana bunu tavsiye ediyorum. Çekingen adımlar atmak yerine başlangıcını yap. Beğenmezsen bırakırsın. Fazla bir şey öğrenmekten kimse bir şey kaybetmez ;) Bir ara Ruby On Rails bile incelemiştim :)

  6. peki yakut bey ben şöyle birşey sormak istiyorum.Siteyi bu şekilde yapmış olmamız halinde bize sitenin hızı konusunda bir avantaj sağlamış olacak mı? Yani çalışma şeklinde bir değişiklik olacak mı yoksa sadece daha kolay ve daha düzenli olmamızı mı sağlıyor ? çünkü hepimizin kendimize göre bir düzeni ve kolaylığı var bu alışkanlıklarımızı yitircek olmamız olaya önyargılı bakmamıza sebebiyet veriyor en azından ben böyle bakıyorum

    1. Hız kavramı tamamen görecelidir. Yani ufak bir uygulama için kendi yazacağınız kodlar elbette Codeigniter’dan daha hızlı olacaktır. Fakat büyük projelerde hızdan ziyade güvenlik ve esnekliğin ön plana çıktığını düşünüyorum. Hız konusunda da çok fazla bir fark yok zaten.

  7. MVC yazınızı ilgiyle takip ediyorum. MVC tarafındaki eksiği dolduracağına inanıyorum.
    Çalışmalarında başarılar.

  8. dersler için teşşekkürler fakat codeigniter ile dersleri devam ettirirseniz çok seviniriz kolay gelsin

  9. Gerçekten güzel bir anlatım benim gibi php’nin spagetti yapısından bıkan ve karmaşıklıktan bezmiş php kodlayanlar için mükemmel bir makale devamını beklemekle birlikte başarınızın devamını dilerim.

  10. Makale için teşekkürler benimde artık MVC Yapısına yavaş yavaş geçmem gerektiğini düşünüyorum şimdilik class larla kendimi geliştiriyorum ve makalelerinizi takip ediyorum
    Harika ve açıklayıcı olmuş ancak devamı konusunda endişeliyim ???

    Doğal Olarak başlayıp yarım kalmaktan korkuyorum yeterli türkçe kaynak yok maalesef :(
    İbrahim Hızlıoğlu nun hazırladığı seti almak istiyorum alan arkadaşlar varsa ise fikirlerini almak isterim….

    Devamını okumak dileğiyle….

  11. Codeİgniter ile yazılarınızı inceledim özenle yazılmış teşekkür ederim yazdığınız ve vakit ayırıp paylaştığınız için..

    (www.codeigniter.gen.tr) sitesinde kullanıcı kılavuzunu da takip ettim ama dosyalar la ilgili açıklama yapyı daha net görmemi sağladı..

    Hız konusunda eleştiride bulunmak son derece yersiz.. sonuçta bu tamemen gönüllü ve vakit alan birşey.. bunu paylaşmakta bir lütuf olduğunu unutmamak gerekiyor tekrar teşekkürler..

  12. Harikulade olmuş ne diyeyim, Allah kod yazan ellerinize nur indirsin hocam :)

  13. CI ile birlikte smarty kullanmaya calisiyorum.Siz ce ne kadar gerekli ? CI'nin kendi template sistemi ile devam mı etmeliyiz ?
    Ayrıca
    Yeni başlayan biri olarak aşağıdaki cümle epey bi işime yaradı,
    ————-
    Peki ya projelerimizde kullanacağımız resimler, javascript ve css dosyaları gibi ek öğeler nerede bulunacak diye sorabilirsiniz. Bu klasörler ana dizinde system ile aynı seviyede bulunmalıdırlar.
    Bu kısmı biraz açabilirseniz. ?
    ————-
    View dosyalarımızın içinden de basit bir şekilde bu dosyaları çağırabiliyoruz.
    —————–
    Yazdıklarınız için teşekkürler, devamını bekliyoruz, kolaylıklar :)

  14. Framework kullanmaya yeni başlayan birisi olarak çok işime yaradı. :)

  15. cok karışık bi turlu parcalari yan yana getiremedim topla kayıyor onun için ne yapmaliyim sayfa savaş alanina donmuş her şey birbirne giriyor.

Leave a Reply

Your email address will not be published. Required fields are marked *