MVC’yi tanıyor musun?

26 May 2009 | Categories: Bilişim, PHP | Tags: , , , ,

MVC adında birisi varmış dediler, M. View Controller. M. yani Model babasının isminden geliyor.

Model amca Controller ailesinin ali ayağıymış. Pazara gider evin ve işinin ihtiyacı olan malzemeleri alır getirir, ailenin tüm ağır işlerini o üslenirdi. Aile ev yapımı oyuncakları bu şekilde hazırlardı. Bizim View da çarşıya çıkıp bunları satar, akşamki kazancını eve getirirdi. Controller ailesi yine bir araya gelir Model amcanın etrafına toplanarak bir sonraki güne hazırlanırlardı.
Günler aylar böylece geçip gitti, sıra bize geldi, Controller ailesin işini devam etmek bize düştü.
O yüzden geyiği bırakıp bu işi hızlıca öğrenmemiz lazım ;)

Model : Uygulamanın veri tabanı işlemleri gibi arka planda destek sağlayan bölümüdür
Hikayemideki pazardan alışveriş yapma işlemi
View : Uygulamanın kullanıcıya sunulduğu (örn: html in hazırlandığı) bölüm
Hikayemideki oyuncakları satma işlemi
Controller: Modelden aldığı verileri View’a işleyerek gönderen bölümdür
Hikayemizdeki Controller ailesinin oyuncakları hazırlaması buna örnektir.

Küçük bir de php örneği vererek konuyu kapatalım:

Model.php

class Model {
	public function pazaraGit(){
		return $malzemeler;
	}

	public function oyuncaklariYap($mazleme){
		return $oyuncaklar;
	}

	public function paralarıKasayaKoy($para){
		return true;
	}
}

Controller.php

$model = new Model();
$malzemeler = $model->pazaraGit();
$oyuncaklar = $model->oyuncaklariYap($malzemenin_gerekli_kismi);

if ($view_dondu) {
	$model->paralariKasayaKoy($paralar);
}

View.html

<tezgah>
	<?php foreach ($oyuncaklar as $oyuncak) : ?>
		<sat><?php echo $oyuncak; ?></sat>
	<?php enforeach; ?>
</tezgah>

Eğelenerek yazdığım bu yazıyı okuduğunuz için teşekkür ederim. Umarım faydalı olmuştur. MVC konusunu öğrendikten sonra Zend Framework ile devam edeceğiz. Emin olabilirsiniz ki framework olayına girdikten sonra bunca zaman boşuna yaşamışım diyeceksiniz.
Güzel bir şekilde devam edebilmem için eleştiri ve önerilerinize ihtiyacım var.

  1. May 26th, 2009 at 12:44
    Reply | Quote | #1

    Güzel bir yazı olmuş, eline sağlık :)

    MVC arasındaki bağın klasik bir örneği var: Sevdiğimiz insanı gördüğümüzde gözümüz bu veriyi beyinimize yollar (V > C), beynimiz buna bir tepki vererek yüz sinirlerine emir gönderir (C > M), sinirlerimiz beyinden gelen emri işleyerek kasları gerer ve gülümsememizi sağlarlar (M > V). Tüm MVC süreci bununla özetlenebilir.

    Ben de bu konuda bir yazı yazmıştım: http://sevalunver.blogspot.com/2009/04/model-view-controller.html

  2. omer
    May 27th, 2009 at 11:46
    Reply | Quote | #2

    zend ‘de yani oda ayrı bi dili öğrenmek gibi bişey kardeşim , iki ay zend le uğraşsan herahlde php yi unutur gidersin bence en iyisi kendi framework unu zamanla oluşturmak ….

  3. May 27th, 2009 at 11:59
    Reply | Quote | #3

    Tam olarak katılmıyorum, kendi frameworkunu oluşturmak güzel birşey ama bu mantık PHP’yi, web sunucusunu hatta işletim sistemini yazmaya kadar çıkar. Genelde framework’lar bir topluluk tarafında geliştirilir, bu da benim yazacağımdan çok daha hızlı ve daha güzel olur. PHP’yi unutmak konusuna da katılmıyorum, çünkü PHP’nin gelişmesi için nesne tabanlı yapılanmaya ihtiyacı var. Bu yüzden fonksiyonların unutulmasında da bir sakınca yoktur. Aylardır ZF ile uğraşıyorum ve müthiş bir hafıza problemim var, buna rağmen hala baglan.php yazabilirim ;)

  4. omer
    May 27th, 2009 at 15:10
    Reply | Quote | #4

    aslında biyerde dünya inancı gibi bişey bu durum ne bileyim hazır kullanmak içime hiç sinmiyo en azından o kadar profesyonel değilim ona güvenemiyorum açık olabilirmi iş büyüyünce performansı ne yapar gibi sorular geliyo aklıma … tabi uzun vadede süreklili ne olurr bu frameworklerin işi kolaylaştırma babında harika tabi …

  5. May 28th, 2009 at 13:47
    Reply | Quote | #5

    o zaman daha harika, güvenlik için zend’i kullanabilirsin, eminim ki profesyonel olmayan birisi zend’le yazmaya başlayınca bilinçli olmasa bile bir çok yazılımsal mantıkları izlemek zorunda kalcak, bu da güvenlik demek.
    kesinlikle tavsiye edilir.

  6. July 12th, 2009 at 04:17
    Reply | Quote | #6

    ZF süper bişey bence çok büyük kolaylıkları var daha yeni başladım ama gerçekten çok hoşuma gitti yeni yazılarını bekliyouz kardeşim.

  7. November 26th, 2009 at 17:36
    Reply | Quote | #7

    MVC benim PHP’de cok kullandigim bir pattern. ZF’nin Modelleri siradan bir blog veya CMS icin kullanisli olabilir ama buyuk veya siradan olmayan projelerde sorun olabiliyor. Bunun yanisira, ZF kullanmamamin iki onemli nedeni var, birincisi Zend_Db nin fetchmode constant’ ini saklamasi ve thread sonunda sifirlamamasi. Ikinci onemli neden ise, benim gibi genelde ajax yazilimlar yazan bi programci icin ZF nin view kisminin hicbi ise yaramamasi. Benim kendi yazdigim bir frameworkum var, ayni ZF nin zayiflamis hali, ZFye gore cok da ustun yanlari var. Mesela bootstrap her cagirildiginda veritabanindaki butun tablolar icin model scriptleri olusturuyor. ZF de bunu yapabilirdi mesela.

  8. Mehmet Gürevin
    July 31st, 2010 at 13:38
    Reply | Quote | #8

    PHP’de ZF olsun olmasın gelinen nokta artık “scope” sorunu bence. Misal, öyle bir design pattern implemente ediosun ki herşey çok güzel mantıklı. singletonlar fln uçuşuyor havalarda. Ancak ne oluyor? F5′e basıyorum, bir apache prosesi alıyor php dosya yığınlarını ardı ardına çalıştırıyor, bodoslama. …ve bitiyor. evet, bitti. herşey 0.000232 ms içindi.

    Demem o ki, eğer yaşam döngün bu kadar sınırlı ise design patternlerle hiç uğraşmamak, bash betiği yazarcasına yalnızca işini yapan minimum satırı yazmak daha hayırlı gibi.

    Bir gün birisi çıkıp JavaEE’yi (spring, struts fln diil, temel spec’ler yalnızca) PHP’de implemente edecek (tasarım olarak tabi) ve PHP yazan dostların ufkunu genişletecek.

    elvin ps: bu da blog hayırlı olsun mesajım.