Merhaba arkadaşlar,
Phphocasi.com.tr’ da yayınladığımız Codeigniter Dersleri setimize 3. yazımızla devam ediyoruz. Bu dersimizde, MVC nedir?, Codeigniter kurulumu, Codeigniter Klasör yapısı gibi konulardan bahsedeceğiz. Önceki derslerimizin listesine buradan ulaşabilirsiniz.
Mvc Nedir?
Mvc açılımı (Model-View-Controller) olan bir tasarım desenidir (design pattern). Günümüzde MVC denince bir çok kişinin aklına Microsoft’ un Asp.Net MVC Framework’ ü gelmektedir. Fakat MVC tasarım deseninin ilk ortaya atılması 1979 yılında Trygve Reenskaug tarafından olmuştur. Oysa Microsoft firmasının ilk kurulduğu yıllarda bu tasarım deseni Trygve Reenskaug tarafından zaten ortaya atılmıştı.
Tasarım Kalıbı Nedir?
Tasarım kalıbı nedir kısaca bahsedecek olursak tasarım kalıpları yazılım tasarımında karşılaşılan birtakım problemlere karşı esnek, yeniden kullanılabilir çözümler getiren hazır kalıplardır.
Mvc Yapısı
MVC mimarisini yukardaki resimden hareketle yorumlayacak olursak, Diyelim ki kullanıcı tarayıcıdan bir istekte bulundu. Bu istek ilk olarak Controller’ a gider, Controller bu isteğin sonucunun sorgulanması adına bu isteği Modele gönderir. Model de Controllerdan kendisine gelen istek sonucu dönen verileri, tekrar Controller’ a gönderir. Controller kendisine Model tarafından gönderilen verileri View’ a gönderir, ve böylece kullanıcı yapmış olduğu isteğin sonucunu ekranında görür.
Yukardaki anlatımı gerçek hayattan bir anlatımla destekleyecek olursak kullanıcı tarafından yapılan isteğin www.phphocasi.com.tr olduğunu düşünelim. Bu istek controller tarafından değerlendirilir ve veri sorgulanması adına Model’ e iletilir. Model tarafından Controller’ a gönderilecek veriler ise www.phphocasi.com.tr sitesinde bulunacak tüm dersler olacaktır. Controller gelen dersleri View’ a gönderir. View’ da anlam kazanan veriler karşımıza www.phphocasi.com.tr anasayfası olarak çıkar. İşte genel olarak MVC mimarisinin işleyişi bu şekildedir. Controller’ da daha çok backend kodları (Php), Model’ de daha çok (SQL kodları), View’ da ise frontend kodları (Html, Css, Js), bulunmaktadır.
MVC’ nin avantajları
- Makarna kod (Farklı teknolojideki kodların aynı sayfa içinde bulunması) yazmamızı önler. Düzenli kod yazmaya teşvik eder.
- MVC mimarisi sayesinde farklı teknolojiler farklı sayfalarda bulunacağından hata ayıklama kolaylaşır.
- Katmanların birbirlerinden ayrı olması test edilebilirliği kolaylaştırır.
- MVC’ nin sahip olduğu farklı katmanlar sayesinde yazdığımız kodların yeniden kullanılabilirliği artar. (Farklı projelerimizde önceki projelerimizde kullandığımız kodları tekrardan kullanabiliriz)
- MVC mimarisi sayesinde yazılan kodların anlaşılırlığının yüksek olması yazılım geliştirme aşamasında bir ekibin proje üzerinde çalışmasında kolaylık sağlar. Ekipçe çalışma ise yazılım geliştirme sürecini hızlandırır ve projenin erken bitmesine olanak sağlar.
Codeigniter Kurulumu ve Codeigniter Projesinin Çalıştırılması
Dersleri takip ederken herhangi bir text editör ya da ide (integrated development environment) kullanabilirsiniz. Ben PphStorm’ u kullanıyorum. Bu seride yazacağım projelerde Codeigniter’ ın 3.1.9 versiyonunu kullanacağım. Sorun yaşamamamız için ya da yaşayacağımız sorunların çözümlerinde rahatlık sağlaması için size de aynı Codeigniter sürümüyle geliştirme yapmanızı tavsiye ederim.
Codeigniter projesini buradan indirebilirsiniz. İnen CodeIgniter-3.1.9.zip dosyasını çıkartarak içindeki
CodeIgniter-3.1.9 (İç içe 2 adet CodeIgniter-3.1.9 dosyası var) içine girip soldaki resimde kırımızı renk ile belirtilen 2 adet klasör ve bir adet dosya proje dizininize kopyalanır. Proje dizininden kastım önceki yazımda da belirttiğim gibi Xampp kullananlar için htdocs, Xampp benzeri uygulamalarda (Wampp, AppServ) www klasörünün altıdır. Projelerinizi düzenli bir şekilde tutmanız için size tavsiyem C:xampphtdocsMobilhanemDers_adı şeklinde bir dizine Codeigniter projenizi atmanız. Bu sayede serideki dersleri kolaylıkla kaydetmiş ve geri dönüp bakmak istediğinizde kendinize kolaylık sağlamış olursunuz. Codeigniter Projenizin çalışabilmesi için Application ve system klasörü ile birlikte index.php dosyasının bulunması şimdilik yeterlidir. user_guide isimli klasör Codeigniter sitesinde bulunan kullanım kılavuzunun çevrimdışı versiyonudur. Bu yüzden bu dosyayı proje dizinimize atmaya gerek yoktur. “tests” adındaki klasör ise bitirilen projeleri test amacıyla kullanılan bir klasördür. Bu klasöre de sonraki derslerimizde değineceğiz. Öğrenme aşamasında system klasörünü fazla kurcalamamanızı tavsiye ederim. system klasörünün içindeki dosyalarda yapacağınız bir değişiklik framework yapısını bozabilir.
Eğer şimdiye kadar ki işlemleri yazıda anlattığım şekilde yaptıysanız proje dizininizin yanda bulunan resimdeki gibi olması gerekir. Yazacağımız projelerde önceden de belirttiğim gibi sadece kırmızıyla gösterilen dosya ve klasörlerin var olması yeterlidir. Ders adı olarak Kurulum seçtim, siz aklınızda kalıcı olacak farklı bir ders adı seçebilirsiniz. Kurulumumuzun doğru olup olmadığını test etmek için http://localhost/Mobilhanem/Kurulum/ adresine gitmemiz yeterli. Eğer bu adrese gittiğinizde aşağıdaki resimde gösterilen sayfaya benzer bir sayfa ile karşılaşıyorsanız kurulumu başarıyla tamamlamışsınızdır demektir.
Codeigniter Klasör Yapısı
Codeigniter temel olarak 2 klasörden oluşur bunlar,
- system
- application
Application
Application klasörü adından da anlaşılacağı üzere projenin geliştirileceği klasördür. Projenin kodları bu klasör altında ki dosyalarda yazılır. Application klasörü aşağıda açıklanan klasörleri içerir.
- cache : Bu klasör, uygulamalarımızın önbelleğe alınmış tüm sayfalarını içerir. Bu önbelleğe alınmış sayfalar, sayfalara erişimin genel hızını arttırır.
- config : Bu klasör, uygulamayı yapılandırmak için çeşitli dosyalar içerir. Örnek olarak config.php dosyası ile projemizi yapılandırabilirken, database.php dosyası ile projemizin veritabanı bağlantısını yapılandırabiliriz.
- controllers : Yazılarımızın başında Codeigniter’ ın MVC (Model – View – Controller) mimarisini kullandığından bahsetmiştik. Controllerlar MVC’ mimarisinin akışında son derece önemli görevi olan bir yapıdır. Controllers klasöründe de projemizin controllerlarını tutarız.
- core : Projemizin sınırlarını genişletirken kullandığımız bir klasördür. Projemize ait çekirdek dosyaları bu klasörde tutarız. Örnek verecek olursam Controller ya da Model’ imizde bulunan benzer kodları Controller ve Model için çekirdek bir sınıf yazarak bu kodları burada yazarız. Böylece Controller ve Model dosyalarımız merkezi bir yapıya kavuşarak her seferinde tekrar eden kod (duplicate code) yazmaktan ve yapılması gereken bir değişikliğin her dosya için tek tek uygulanması durumundan kurtulmuş oluruz. Yapacağamız bir ekleme ya da değişiklikten core sınıflarımızı kullanan Controller ve Modeller’ imizin hepsi etkilenir.
- helpers : Bu klasörde uygulamamızda kullanacağımız helper (yardımcı) dosyalar bulunur.
- hooks : Bu klasör Codeigniter Framework’ ünün çekirdek kodlarına zarar vermeden Framework’ ün iç işleyişinde değişiklik yapmak için kullanılır.
- language : Bu klasörde projenin dil dosyaları tutulur.
- libraries : Bu klasörde projemiz için yazacağımız ya da dışardan projemize dahil edeceğimiz kütüphaneler bulunur.
- logs : Bu klasör system loglarıyla ilgili dosyaları içerir.
- models : Bu klasör MVC (Model – View – Controller) mimarisindeki Model dosyalarının (Varlık sınıflarının) bulunduğu klasördür.
- third_party : Bu klasörde uygulamada kullanılacak 3. parti eklentiler bulunur.
- views : Bu klasör MVC (Model – View – Controller) mimarisindeki View dosyalarını (Projenin arayüzünü oluşturduğumuz html dosyaları) bulundurur.
System
Bu klasör kodlamayı kolaylaştırmaya yardımcı olan Codeigniter core codes (çekirdek kodları), libraries (kütüphaneleri), helpers (yardımcıları), kısacası Codeigniter Framework yapısını oluşturan klasör ve dosyaları bulundurur.
- core : Bu klasör Codeigniter Framework’ ünün çekirdek yapısına ait dosyalar bulunur. Önceden de belirttiğim gibi amacınız amacınız Codeigniter çekirdeğini genişletmek dahi olsa, bunu application klasörü altında bulunan hooks klasörü altında yapmanız. Çalışmalarımız genel olarak application klasöründe geçeceği için system klasörüne bir süre müdahale etmemenizi tavsiye ederim.
- database : Veritabanı sürücülerinin ve veritabanı bağlantısıyla ilgili diğer özellikleri bulunduran klasördür.
- fonts : Yazı tipleri ile ilgili bilgileri ve diğer özellikleri bulunduran klasördür.
- helpers : Bu klasör Codegniter Framework bünyesinde bulunan yardımları (helpers) içerir Örnek verecek olursak, captcha, date, cookie ve uri yardımcıları gibi…
- language : Sistem ile ilgili dil dosyalarının bulunduğu klasördür.
- libraries : Bu klasör Codeigniter bünyesinde ki kütüphaneleri içerir.
Codeigniter Dersleri eğitim setinin 3. yazısını burada noktalıyorum. Bu yazımızda Mvc Nedir?, Codeigniter Kurulumu, Codeigniter Klasör Yapısı gibi konulardan bahsettik. Konu ile ilgili sorularınızı Mobilhanem Soru&Cevap bölümünden sorabilirsiniz. Bir sonraki derste serimize Codeigniter’ ı tanımaya application klasöründeki dosyaları kurcalayarak ve kod yazmaya başlayarak devam edeceğiz.
Tüm Codeigniter Dersleri‘ ne buradan ulaşabilirsiniz.
2