Cuma, 8 Ağustos 2008

MVC Yapısı: Model Dosyası ve Kullanımı

 

Model üzerine yoğunlaşmadan önce genel olarak MVC yapısı üzerine bir iki cümle edelim. MVC yapısı, Model - View - Controller üçlüsünden oluşur. Model, veritabanı ile bağlantıları sağlar, genellikle SQL komutlarının bulunduğu kısımdır. View, veritabanından çekilen bilgilerin ya da Model üzerinde yapılan işlemlerin kullanıcıya yansıtıldığı HTML kodlarının yer aldığı bölümdür. Controller ise, Model ve View arasındaki iletişimi sağlar, kullanıcının sitede doldurduğu formları işler, Model'den gelen bilgileri düzenler ve View'e aktarır.

MVC`nin temel taşı tanımın ilk harfi M`nin açılımı olan Model`dir. Model, tanımın diğer iki önemli unsuru olan Controller ve View yapılarının içinde veritabanı ile ilişki kuran bölümüdür. En çok veritabanı ile ilişkisi anlatılsa da Model bölümü programın motor kısmı kabul edilebilir. İyi yazılmış programların Model dosyalarının satırları fazla olmalıdır. Şimdi basit bir Model dosyasının içinin nasıl olması gerektiğine göz atalım:

class Model_ismi extends Model {

    function Model_ismi()
    {
        parent::Model();
    }
 
    function son_mesaj()
    {
//buraya veritabanından mesaj getirme kodları yazılacak.
    }
}

Basit bir model dosyası yukarıdaki bölümlerden oluşur. Birinci bölümde php class'nın ismi Model_ismi olarak yazılır. Model dosyasının ismi de Model_ismi.php olmalıdır.

parent::Model cümlesi ile bu dosyanın Model işlevi görmesi gerektiği söylenmelidir. Böylece CodeIgniter dosyayı model olarak kabul ederek ona göre işleme alacaktır.

function son_mesaj() ise Model'in içinden çekeceğimiz verilerin yer aldığı fonsiyonun adıdır. Bu dosyayı Controller içinden şöyle kullanırız:

//önce Model dosyasını yüklüyoruz:
$this->load->model('Model_ismi');

//şimdi Model içinden son mesajları bir View değişkenine atıyoruz: 
$data['son_mesaj'] = $this->Model_ismi->son_mesaj();

Böylece Model'in ne işe yaradığını ve Controller - Model ilişkisinin nasıl çalıştığı konusunda bir fikir sahibi olduğunuzu umarım.

Yorumlar

Her uygulamada model olması şart mıdır? ben bunu merak ediyorum. Model olmadan uygulama çalışmaz mı?

hocam şimdi şöyle bir açıklama var:
CodeIgniter has a fairly loose approach to MVC since Models are not required. If you don't need the added separation, or find that maintaining models requires more complexity than you want, you can ignore them and build your application minimally using Controllers and Views. CodeIgniter also enables you to incorporate your own existing scripts, or even develop core libraries for the system, enabling you to work in a way that makes the most sense to you.
şu adreste diyor

Derek`in bahsettiği bölümün kısa çevirisine göre "yazdığınız uygulamalarda Model gereksinimi yoktur. Eğer sizin uygulamanız için gerekli değilse kullanmayabilirsiniz. Ancak Controller ve View öğelerini kullanmanız gereklidir."

Yine de uygulamanızı yazarken veritabanı olmamasına rağmen, bir işlem yaptıracaksanız (bir hesap olabilir, bir arama tarama olabilir vs.) o zaman da Model kullanmanız daha doğru olur.

Doğru yazılmış bir MVC uygulamasında kodun en büyük kısmını Model oluşturur unutmayın.

Makalalerimizde yapmamız gereken olayını temelini, mantığını anlatmaktır. Bu makale de buna en iyi örnek diyebilirim. Ellerinize sağlık. Bizi zorla Code Igniter'cı yaptınız :)

@yakuter: Mesajınız için çok teşekkür ederim. Ben de öğrenirken karşılaştığım zorlukları çözdükçe, yeni kullanıcılarla paylaşmak istedim. Eğer yazdıklarımın sizlere bir nebze de olsa yararı dokunuyorsa ne mutlu bana!

CodeIgniter'a yeni başlayan biri olarak neyin ne olduğunu anlatan güzel bir yazı olmuş. Teşekkürler.

Bilgilerinizi paylaşmanız gerçekten çok güzel. Sizin sayenizde biz de MVC hakkında ve tabi code hakkında önemli bilgilere ulaşıyoruz... Sık sık paylaşım yapmanız dileğiyle :)...

Yorum Ekle