Skip to content

1. Web/PHP uygulamalarında MVC mimarisini kullanma

Belgedeki PDF, |BURADA| olarak mevcuttur.

Belgedeki kodlar |BURADA| adresinde mevcuttur.

MVC modeli (Model-Görünüm-Denetleyici), sunum, işleme ve veri erişim katmanlarını net bir şekilde ayırmayı amaçlamaktadır. Bu modele uyan bir web uygulaması şu şekilde yapılandırılacaktır:

Bu tür bir mimari genellikle 3 katmanlı veya 3 seviyeli mimari olarak adlandırılır:

  • kullanıcı arayüzü görünümdür (V)
  • uygulama mantığı denetleyicidir (C)
  • veri kaynakları modeldir (M)

Kullanıcı arayüzü genellikle bir web tarayıcısıdır, ancak ağ üzerinden web hizmetine HTTP istekleri gönderen ve web hizmetinin gönderdiği sonuçları biçimlendiren bağımsız bir uygulama da olabilir. Uygulama mantığı, kullanıcı isteklerini işleyen komut dosyalarından oluşur. Veri kaynağı genellikle bir veritabanıdır, ancak basit düz dosyalar, bir LDAP dizini, uzak bir web hizmeti vb. de olabilir. Geliştiricinin, bu üç varlık arasında büyük bir bağımsızlık sağlaması önemlidir; böylece bunlardan biri değiştiğinde, diğer ikisinin değişmesi gerekmez veya çok az değişir.

MVC mimarisi, nesne yönelimli dillerle yazılmış web uygulamaları için oldukça uygundur. PHP (4.x) dili ise nesne yönelimli değildir. Bununla birlikte, MVC modeline yaklaşmak amacıyla kodun ve uygulama mimarisinin yapılandırılmasına özen gösterilebilir:

  • Uygulamanın iş mantığını, istek-yanıt diyaloğunu kontrol etmekle görevli modüllerden ayrı modüllere yerleştireceğiz. MVC mimarisi şu şekilde olur:

[Logique Applicative] bloğunda şunlar ayırt edilebilir:

  • Uygulamanın giriş kapısı olan ana program veya denetleyici.
  • [Actions] bloğu; kullanıcının talep ettiği eylemleri yürütmekle görevli komut dosyaları kümesidir.
  • uygulamanın mantığı için gerekli olan PHP modüllerini bir araya getiren [Classes métier] bloğu. Bu modüller istemciden bağımsızdır. Örneğin, parametreler olarak kendisine sağlanan belirli bilgilerden bir vergiyi hesaplamaya yarayan işlev, bu bilgilerin nasıl elde edildiğiyle ilgilenmek zorunda değildir.
  • [Classes d'accès aux données] bloğu, denetleyiciye gerekli verileri sağlayan PHP modüllerini bir araya getirir; bu veriler genellikle kalıcı verilerdir (BD, dosyalar, ...)
  • Müşteriye yanıt olarak gönderilen görünümleri oluşturan modüller.

En basit durumlarda, uygulama mantığı genellikle iki modüle indirgenir:

  • [contrôle] modülü, istemci-sunucu iletişimini sağlar: isteğin işlenmesi, çeşitli yanıtların oluşturulması
  • [métier] modülü, [contrôle] modülünden işlenecek verileri alır ve karşılığında sonuçları ona geri gönderir. Bu [métier] modülü ise kalıcı verilere erişimi kendisi yönetir.