Son birkaç hafta içinde ben PHP kullanarak web uygulamaları için MVC tasarım deseni eğitim olmuştur. Ben desen çalışır ve neden küçük veya büyük web uygulamanın herhangi bir tür uygulama çok iyi bir şekilde nasıl anlamak geniş bir görünüm alıyor.
Anladığım kadarıyla biz çok gibi Controller ile birbirleriyle konuşmak 3 farklı katmanları var:
Kullanıcı Girişi ---> Görünüm ---> Controller ---> Model
Site Çıktı <--- Görünüm <--- Kontrol <--- Model
Benim planlanan uygulama ile benim veritabanındaki her tablo için bir modeli var umuyoruz, ve her model bu tabloyu yönetmek için gerekli tüm işlevleri / mantığı olacaktır. Buna karşılık bu modellerin her biri ilişkili bir görünümü olacaktır. Tabii Modeli ve Görünüm irade onları kullanılmasına olanak sağlayan bir denetleyici var.
Şimdi bu veritabanını gerektiren her bir mantıksal eylem kapalı olduğu gibi başımı etrafında almak kolaydır. Belirli bir eylem birden fazla tablo / model kullanımını gerektirir Ancak, ne olur?
Uygulamanın Yönetici tarafı veritabanını korumak için bir seferde bir modele daha fazla ihtiyacımız olası değildir. Uygulamanın ön-uç veya kullanıcı tarafında farklı bir konudur! Ben belli bir bölümü için makalelerin bir listesini gösteren bir web sayfası, bir liste var diyelim şu anda kullanıcılar oturum açmış - ve SO bir örnek borçlanma - Böyle bir etiket bulutu olarak site istatistikleri.
Madde, Kullanıcıları ve Etiketler - Bu bir sayfa en az 3 benim planlanan tasarım modellerini gerektirir.
Açıkçası benim tek kontrolörleri onu kesmek için gidiş değildir. Peki ben ne yapmalıyım?
Benim web sayfaları için yeni bir monolitik denetleyicileri oluşturmak?
- bana istediğiniz sonuçları almak için izin
- yinelenen kodlama bir sürü gerektirir
- gerçekten zor korumak için gerekirse değişiklikler
Küçük bir spesifik denetleyicileri yöneten bir "süper" denetleyicisi oluşturma
- bana istediğiniz sonuçları elde etmenizi sağlar
- böylece bir komut dosyası değişiklikleri shouldn’t diğerlerini etkileyecek modüler olacak
- minimal kodu çoğaltma
Create [Burada mükemmel bir çözüm insert]
. Şu anda 2. Seçenek doğru vefasız am teoride tüm gerekli davranış olarak kodlama kısmak gerekir Basitçe, çünkü küçük denetleyicileri var olacak - ve her şey bakımı kolay olacaktır.
Belki de bu gibi görünebilir:
articlecontroller.php
<?php
//Article Controller Script
if($_GET['article'] = 'foo')
{
//magic necessary for displaying article "foo".
}
?>
usercontroller.php
<?php
//User Controller Script
if($_GET['user'] = 'display')
{
//magic necessary for displaying users
}
?>
supercontroller.php
<?php
//"Super" Controller
//magic for setting up page
if(isset($_GET['article']))
{
include('articlecontroller.php');
}
if(isset($_GET['user']))
{
include('usercontroller.php');
}
?>
Gördüğünüz gibi, benim süper denetleyicisi bu özel sayfa gerektirir ne bakar ve homurtu işi gerekli denetleyicileri içerir. NB: kod sadece hızlı ve kirli bir örnek :)
SO, sana soruyorum bu yüzden bu yüzden hiç bir yanlısı yoluyla Ancak, ben duyuyorum. Hangi seçenek tercih edilir? Ne Seçenek 3 öneririm ne olur? Herhangi bir kod parçacıkları / örnekleri güzel ama gerekli değildir olacaktır.
Bu kadar bunu yaptıysanız, zaman ayırdığınız için teşekkür ederiz.
Ben bu soruyu güncelleştirmek düşündüm [ve bir cevap kabul - bunu unuttum: P]. Fat Modeller / Skinny Kontrolörleri kavramına bir göz aldı ve ben nasıl yapıldığını seviyorum, bu yüzden kesinlikle yön o alacak.
Ben de diğer çerçeveler bazı bakmak için tavsiye almış ve nasıl kendi MVC desenleri ulaşmak. Almak için bir çok yerine var! Yine de, yol boyunca pek çok yeni şeyler öğrendim, bu yüzden büyük bir yararı yoktu. Ben gelecekte daha fazla soru olabilir, ama şimdi ben bir başlangıç yapmak için yeterli daha var.
Giriş için hepinize teşekkür ederim.