Ö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.

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.

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.

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.


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.
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.
Genç yaşlarda programlama ile tanıştı ve Delphi ile başladığı programlama macerasına şuanda PHP, SQL, Javascript, AJAX, CSS, XHTML teknolojileri ile devam etmektedir. Elektrik - Elektronik bölümü mezunu olan "yakuter" 2006 yılından itibaren yakuter.com'un yazarlığını yapmaya başlamıştır.
Tuncay
03 Aralık 2009
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
yakuter
03 Aralık 2009
@Tuncay, eleştirini anlıyorum. Madem gerçekten o kadar yavaş biraz daha hızlanmaya çalışayım. Teşekkürler yorumun için.
Enes
04 Aralık 2009
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.
yakuter
04 Aralık 2009
@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 :)
serkan
04 Aralık 2009
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.)
yakuter
04 Aralık 2009
@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 :)
Serkan
05 Aralık 2009
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?
recep yüksel
05 Aralık 2009
Ö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 :)
yakuter
05 Aralık 2009
@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 :)
Recep Yüksel
06 Aralık 2009
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
yakuter
07 Aralık 2009
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.
ismail eski
10 Aralık 2009
MVC yazınızı ilgiyle takip ediyorum. MVC tarafındaki eksiği dolduracağına inanıyorum.
Çalışmalarında başarılar.
selman tunc
12 Aralık 2009
ayrıca şu eklenti gayet güzel
https://addons.mozilla.org/en-US/firefox/addon/53784/
Codeigniter.gen.tr yapımcılarından
trr
04 Nisan 2010
dersler için teşşekkürler fakat codeigniter ile dersleri devam ettirirseniz çok seviniriz kolay gelsin
Emrah Özgilik
13 Mayıs 2010
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.
Kadir DABAN
04 Ağustos 2010
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….
Yazılan yazılardan ilk siz haberdar olun, yeni yazılar e-postanıza gönderilsin.
menchek
02 Eylül 2010
yakuter.com © 2006-2010 Erhan Yakut. Site tasarım Cenk Akyıldız - (Tema Bilgisi). Hosting sponsoru WebGrup.
Site içerisindeki içerikler izinsiz kopyalanamaz, alıntı yapılamaz.