MVC Akıntısında Sürüklenmek

MVC hakkında yapmış olduğum anketten aldığım şevk ile ilk makalemi kaleme almanın zamanının geldiğini düşünüyorum. Fakat bu konuda genel olarak yapılan bir hata var. O da böyle pratikle çözülecek bir konu için sayfalarca yazılar yazılması. Dürüst olmak gerekirse ben gereksiz bilgileri kenarda tutup sizi kısa ama net bir anlatımla direk olaya dahil etmek istiyorum. Onda sonra yapacağımız pratiklerle zaten üzerine katarız ve konuyu daha da pekiştiririz.

MVC Nedir?

MVC öncelikle bir programlama tekniğidir. Amacı ise daha sade ve anlaşılır projeler geliştirmektir. Peki nasıl olur da bir proje daha anlaşılır hale getirilir? MVC mantığı bu sorunun cevabını “projenin farklı işlev gösteren kısımlarını birbirinden ayırarak” şeklinde cevaplar.

Örnek: Bir ziyaretçi defteri uygulamamız var diyelim. Eski mantıkla kodlamak istersek veritabanından ziyaretçilerin mesajlarını çekme işlemleri, gerekli dosyaların ve fonksiyonların çağrılması ve sonuçların ekranda gösterilmesi aynı dosya veya dosyalar içinde dönen bir dizi karışık işlem gibi görülür. MVC ise altyapıda yürütülen faaliyetleri (veritabanı işlemleri vb.), sonuçları ekrana yazdırma işlemlerini ve bunlar arasındaki bağlantıyı birbirinden ayırarak bize büyük kolaylık sağlamktadır.

MVC

Resimde gördüğünüz gibi konunun temeli aslında armut ile elmayı birbirinden ayırmak. Diğer bir deyişle yine basit bir şekilde söylemek gerekirse ekrana verileri yazacağımız dosyalar ile bu verilerin elde edilmesini sağlayan dosyaları birbirinden ayırarak kod kalabalığından kurtulmak.

Konuya yeni başlayan arkadaşlar demek hepsi bu kadarmış diyebilir fakat malesef (veya çok şükür) hepsi bu kadar basit ve kısıtlı değil. Günümüzde MVC mantığı ile anaçatıları (CodeIgniter, Zend, CakePHP vb.) ayrılmaz bir bütün olarak gördüğümüz için bu mükemmel bileşimi hesaba katmamız lazım. İşte o zaman karşımıza şöyle bir tablo çıkıyor.

MVC

Bu resmi kısaca açıklamak istiyorum. Size şuan oldukça meşhur olan ve PHP programlama dilini kullanan Code Igniter anaçatısının akış şemasını verdim. Gördüğünüz gibi artık olayımızda SEO için URL Yönlendirme (Routing), fazla ziyaretçi alan sitelerin çökmesini engellemek için Önbelleğe Alma (Caching), Güvenlik (Security), Eklentiler (Plugins), Betikler (Scripts), Kütüphaneler (Libraries) ve Yardımcılar (Helpers) gibi oldukça önemli unsurlar bulunuyor. Sakın bu resim gözünüzü korkutmasın, hepsine yavaş yavaş, sindire sindire bakacağız.

Kodlarla MVC

MVC Nedir?” sorusunu cevaplarken bir anaçatı çerçevesinde (CodeIgniter) konuyu özetlemeye çalıştım. Umarım bu kısa giriş mantık için yeterli olmuştur. Bu durumda “Peki ama nasıl kodlarla uğraşacağız?” sorusu aklınıza gelebilir. O zamanda hemen şu basit örneğimizi gösterelim.

Örnek: Örneğimizde bir adet View (goster_view.php), bir adet Model (defter_model.php) ve bir adet Controller (anasayfa.php) dosyamız bulunuyor. Model dosyamızın veritabanından veri çektiğini ve bu veriyi View dosyasıyla ekrana yazdıracağımızı düşünün. Elbette bu ikisini bağlamak yani aracı görevini yürütmek için de Controller dosyamızı kullanacağız. Sizden isteğim Controller dosyasındaki şu özet kodun sadeliğine dikkat etmeniz. Tüm makaleyi özetlediğini düşünüyorum.

<?php

//Controller dosyası - anasayfa.php

$data['sonuclar'] = $this->defter_model->satir($id);

$this->load->view('goster_view',$data);

?>

Açıklanacak fazla bir şey yok ama yine de kısaca değineyim. Örnekte defter_model.php (Model) dosyasında bulunan satir fonksiyonunu çalıştırıyor ve elde ettiğimiz veriyi goster_view.php (View) dosyasına yönlendirerek ekrana yazdırıyoruz. Tabiî bu işlemi de anasayfa.php (Controller) dosyasında gerçekleştiriyoruz.

Sonuç

Model View Controller (MVC) gördüğünüz gibi biz kod sevdalılarını bir sonraki çağa taşıyacak olan oldukça önemli teknik. Bu mantık özellikle de güçlü bir anaçatı ile desteklendiğinde -ki ben CodeIgniter‘dan yanayım- vazgeçilmeyecek ve daha da önemlisi göz ardı edilmeyecek bir gerçek. Bundan sonrası sanırım eğlenceli ve gelişmiş kod nehrinde kendimizi akıntıya bırakmak.

Bir sonraki iskelede görüşmek dileğiyle…

Benzer Yazılar

yakuter

Erhan Yakut

www.yakuter.com

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.

Bu Yazıya Ait Yorumlar

Yiğit Özdamar

Yiğit Özdamar
28 Eylül 2009

Yine şık ve başarılı bir makale her zamanki gibi. Ellerine sağlık Erhan.

yakuter

yakuter
28 Eylül 2009

@Yiğit, teşekkür ederim. Şıklıktan ziyade işe yarar umarım. Yeni başlayanlar için ağır bir konu olduğunu düşünüyorum. Bu yüzden de anlatırken uçmamaya, yavaş yavaş ilerlemeye çalışıyorum. Umarım anlaşılıyordur çünkü gerçekten zor böyle konuları anlatmak :/

yedincisenol

yedincisenol
29 Eylül 2009

Gayet güzel bir konu,güzel bir anlatım. Giriş yapmış olduk. Devamını bekliyoruz; çok teşekkürler.

Fatih BAZMAN

Fatih BAZMAN
29 Eylül 2009

Bu makaleniz ile daha fazla kişinin MVC yapılarına dikkat eder hale geleceğini, OOP ve pattern kullanımının önemini fark edeceğini umuyor, konu üzerine yazacağınız makalelerin devamını diliyorum.

CodeIgniter.gen.tr adresine gösterdiğiniz ilgi için ayrıca teşekkür ederim.

brsyuksel

brsyuksel
29 Eylül 2009

Yanlış anlaşılmasın, ukalalık, kibirlilik olarak görülmesini istemem ama ben bir arkadaşıma MVC’yi anlatırken şöyle anlatmıştım: “Çaycı, çay, bardak var. Sen “Bir koyu/açık-x şekerli/şekersiz çay alayım” diyorsun, çaycı bardağa çayı istediğin şekilde koyup sana sunuyor. Burda View bardak, Controller Çaycı, Model ise çay” :D Biliyorum çok çocuksu duruyor ama arkadaşım çok beğenmişti bu örneğimi :D

yakuter

yakuter
29 Eylül 2009

Arkadaşlar öncelikle çok teşekkür ederim ilginiz ve desteğiniz için.

@Barış, ayrıca katkın ve güzel örneğin için de teşekkürler ;)

Berker Peksağ

Berker Peksağ
30 Eylül 2009

MVC tasarım deseni neredeyse 30 senedir var ama web uygulamalarında henüz yeni yeni popüler olmaya başladı.

Umuyorum yazınız vasitasıyla kullanımı artar.

Alican

Alican
21 Ekim 2009

Teşekkürler,Sizi her zaman takip edeceğim :)

Hülya Aksu

Hülya Aksu
22 Ekim 2009

Kod yazılımını bu şekilde iyileştiren ve kolaylaştıran metodlar çok önemli.

Keşke framework’lere gösterilen önemin yarısı bu tip metodlara gösterilse.

tv rehberi

tv rehberi
24 Ekim 2009

çok başarılı bir makale olmuş tebrik ederim

İrfan KILIÇ

İrfan KILIÇ
30 Ekim 2009

MVC için güzel bir giriş olmuş. Umarım devamı gelir.

Serkan

Serkan
10 Kasım 2009

Ufkumuzu açan bir makale olmuş. Çok teşekkürler… Code ile ilgili bilgilerinizi bizlere aktarırsanız sevinirim… Başarılar.

YeG

YeG
27 Ocak 2010

Merhaba hocam,
Uzun süredir bilgisayar ile iç içeyim ve programlamayıda kendi çapımda geliştirdim(yorum)..
Önceden aklıma hep geldi bi framework kullanmak ama onu kullanıncada sanki hazıra alışmak gibi oluyor..
Ama kullanmakta gerekli ilk defa başlıcaz sizin bilgilerinizle inşallah..

Şunu merak ediyorum.. Bu frameworklerde birçok dosya var birçok kontrol ..vs.. Bunlar ileride sistemde kasıntı yapmıyormu_?Sunucu yorulmuyormu acaba_?

yakuter

yakuter
28 Ocak 2010

@YeG, örneğin Codeigniter’ın ayarlarında hangi sınıfları(class) kullanmak istediğini belirttiğin bir satır var. Buradan şunu çıkartabiliriz: Anaçatılarda (framework) bir çok sınıf vardır ama biz istemediğimiz sürece hiçbirini çalıştırmaz, işleme sokmaz. Doğal olarak sistemimizi hızlı kılmak yine bizim elimizde.

Şunu da belirtmek gerekir tabi ki büyük projelerde ne yaparsak yapalım sistem bir miktar da olsa kasılır fakat anaçatı olmadan da kasılacağı malumdur ;) Anaçatının bize kazandırdığı düzen, hız, güvenlik ve işlevsellik de yanımıza kâr kalır.

Tutkun

Tutkun
28 Ocak 2010

Çok güzel ve sade bir anlatım. Eminim anlamayan yoktur. :) Bu güzel anlatımınızla nice CodeIgniter derslerinin devamını bekliyoruz sevgili Yakuter. ;) :)

Peki ya sizin düşünceleriniz?

Facebook Grubumuz Twitter Wordpress Linked in Google Friendfeed RSS Beslemesi Feedburner RSS

Abonelik

Yazılan yazılardan ilk siz haberdar olun, yeni yazılar e-postanıza gönderilsin.

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.

WordPressValid XHTML 1.0 TransitionalBu web sitesi ne kadar popüler?php