İçeriğe geç

Php mvc mimarisi nedir

Merhaba arkadaşlar,

Mvc mimarisi nedir neden kullanılır kısa bir ön bilgi ile konumuza giriş yapalım. MVC Model View Controller kelimelerinin baş harflerinden oluşan bir kısaltmadır. Bu kelimelerin ne anlama geldiğini açıklayacak olursak:


Model
Veritabanına veri ekleme, çıkarma, güncelleme, silme gibi işlemlerin yapıldığı kısımdır. Kısacası veritabanı işlemlerini yaptığımız kısımdır.

 

View

Stil dosyaları, resim dosyaları, javascript dosyaları,font dosyaları kısacası kullanıcının gördüğü arayüz kısmıdır.

 

Controller

Model ve view dosyaları arasındaki iletişimi sağlayan bir köprü dosyasıdır.

 

Ön bilgiden sonra asıl konumuza dönelim. MVC mimarisi kodlarımızdaki veritabanı işlemleri, arayüz dosyaları ve çalışma mantığını birbirinden ayırmak amacıyla oluşturulmuştur. ASP.NET üzerinde yıllardır kullanılan bu yapıyı PHP scriptlerinde yeni yeni görmeye başladık. Her geçen gün bu kullanımın arttığını görmekteyiz ve bu çok doğru bir adım. Mvc mimarisi kullanarak scriptimizi çok daha kolay geliştirebilir ve test edebiliriz. Yani kodlarınızı bir adım daha ileriye taşımak, spagetti ve karmaşık kodlardan kurtulmak, çok daha profesyonel ve düzenli çalışmak istiyorsanız kesinlikle mvc mimarisini kullanmalısınız.

mvc

Kafanızdaki soru işaretlerini bir nebze de olsa kaldırmak için kısa bir örnekle mvc mimarisini daha anlaşılır bir dille anlatmak istiyorum. Ben mvc mimarisini kullanmadan önce çoğumuzun yaptığı gibi Switch case yapısını kullanarak proje geliştiriyordum. Çok basit bir örnekle açıklayayım. Örneğin kullanıcı siteye girip herhangi bir yazıya tıkladığında adres satırı http://example.com/index.php?page=post&link=yazi-linki  şeklinde olduğunu düşünelim. Bu bağlantıya göre tıkladığımız sayfanın çalışması için index.php dosyamızdaki kontrol yapımız ?page= den sonra gelen değere göre işler. İndex.php dosyasında $_GET[“page”] nin değerine göre sayfalar yüklenir. Yukarıdaki linkten yola çıkarsak tabi ki 🙂

Bağlantımızda ?page=post olduğuna göre tahminen kodlarımız şu şekilde çalışmaktadır.


Switch($_GET["page"]){

case "post":

// Kodlar burada maykıl

break;

default:

//Anasayfa

break;

}

//kodlar burada maykıl yerine genelde çalışacak sayfayı include veya require_once tarzı fonksiyonları kullanarak  içe aktarırız. Örneğin bu alana post.php dosyasını yükledik ve post.php dosyamızın içinde html etiketleri veritabanı sorguları seo fonksiyonları ve çok daha fazlası var. Dosyaları header.php, footer.php, post.php gibi ayırıp yükleseniz bile bu şekilde bir yapıda genel olarak html elementlerini, php kodlarını ve veritabanı sorgularını aynı dosya içinde kullanırız. Bu şekilde bir kodlamada tabi ki de kötü değildir. Ancak ilerleyen zamanlarda görünümde ufak bir değişiklik yapmak istediğiniz zaman bir kod karmaşası içinde olduğunuzu hissedersiniz. İşte tam bu noktada ihtiyacımız olan şey mvc mimarisini kullanmak.

Aynı olayı mvc mimarisiyle yapmış olsaydık eğer controller dosyası bizim post.php dosyası olacaktı. Burada post.php sayfası aldığımız linke ait veriyi model dosyasından çekecek ve tekrar controller dosyasına gönderecekti. Daha sonra controller dosyamız veritabanından gelen veriyi view dosyasına aktaracaktı. Tabi ki bu sizin kurduğunuz çalışma mantığıyla alakalı ancak mvc mimarisinde işler genelde böyle işler 🙂 Kafanızda onu oradan oraya nasıl aktardık gibi şeyler oluşabilir. Genelde ve doğru olarak diziler kullanılarak bu işlemler yapılır. PHP ile nesne tabanlı programlama derslerini ekledikten sonra bu konuyu çok daha iyi işlemek için bir eğitim seti çekmeyi düşünüyorum. Bu yazımda teorik olarak mvc mimarisi hakkında sizleri bilgilendirme çalıştım. Bir sonraki yazıda mvc mimarisine bir giriş yapmayı düşünüyorum. Umarım faydalı olmuştur bir sonraki yazımda görüşmek üzere iyi çalışmalar dilerim 🙂

Kategori:PHP

4 Yorum

  1. Akın Ünal Akın Ünal

    Başlangıç olarak çok yararlı olmuş. Devamını bekliyorum 🙂

  2. kaan kaan

    Hocam artık başlasanız mvc derslerine çok güzel olacak 🙂

    • Çok kısa bir işim JAVA işim kaldı bitsin kaldığımız yerden devam edicez inşallah 🙂

  3. Melda Melda

    Thanks for the info

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir