mvc desen hakkında soru

5 Cevap php

Ben oldukça bu modelini anlamıyorum.

ben ne okudum, o görünen bir model gibi = bir tablo (veri depolamak için veritabanı kullanıyorsanız).

Ben etiketleri adında bir tablo var eğer öyleyse, ben bir etiket model olmalıdır. ve konuları tablo ile i konuları modeli oluşturmak.

sonra ben bir etiketleri denetleyicisi ve ipler denetleyici hakkı var?

bu yüzden bir çok-çok ilişki için bir tags_threads_map tablo var ise ne.

i tags_threads_map model EG olmalıdır. hangi i bir etiketi içeren tüm konuları olsun? ben de bir tags_threads_map denetleyicisi olmalıdır?

Birisi açıklayabilir ya da bana bu konuda iyi bir breif öğretici verebilir harika olurdu.

en öğreticiler sadece basit bir örnek vermek 01:01:01.

5 Cevap

Tam olarak MVC veya herhangi bir yazılım tasarım modelini anlamak için, gerçekten bunu uygulamaya gitmek var ve sonuçları ne görmek gerekir.

O dedi, bu bir MVC modeli = bir tablo reçete değildir. Aslında, bir model tabloların bir dizi tarafından desteklenen, olabilir veya ilişkisel veritabanı (örneğin, bir web hizmeti, düz dosyalar, bir anahtar-değer deposu ya da örneğin bir grafik veritabanı) başka bir şey bile veri menşeli.

Ben modelleri ve ilgili tablolar anlamlı agrega temsil görüşlerini oluşturarak, muhtemelen iyi bir yaklaşım olduğunu öneririm. Örneğin, bir Sipariş ve OrderLine tablonun eskimiş örnek kullanmak için, bir Sipariş modeli ultiamtely Sipariş tablo veya OrderLine tabloda ya da sona erecek veri işlemlerini saklanması olabilir.

Model masaya sıkı 1-to-1 haritalama bağlılık, Görüntüleme ve Denetleyici sadece çok ayrı yapıyor olabilir bazıları sınıfları, bir patlamaya neden olur. Iyi Modeller ve yerine sadece veri modelinin bir projeksiyon olmaktan çok, iş gereksinimleri tarafından belirlenen bazı görev ulaşmak odaklandık Kontrolörleri inşa etmek.

Yani fikir "bir model = bir tablo" daha az ve data yönetir kodu ile içiçe olmayı başarıyor kod istemiyorum fazla operations on data veya kod, kolları user interaction. Bir veritabanına nesnelerin eşleme kolları Persistance tabakasının çeşit varsa, ilkel bir modeli olması için yeterli değil. O veriyle algoritmik bir şey yok o üstüne biraz ayrı kod varsa, bu bir denetleyici bulunuyor. Eğer kullanıcı tüketimi için veri işleme bir yol varsa, bu bir görünümü bulunuyor.

Akla gelen en iyi örnek, bir elektronik tablo: Çizelgede veriler modelidir. Eğer verileri işlemek sayfanızdaki ifadeler varsa, bir kontrolör olarak görülebilir. Sekmeli formda, ya da bir grafikte verileri görürseniz, bu iki görüş vardır. Gösterim verilerle muck yoksa veya hesaplanır nasıl - onlar gözleriniz için biçimlendirmek. Kontrolör gözleriniz için verileri biçimlendirmek değildir - bu değişiklikleri / yaratan / verileri hesaplar. Eğer, örneğin, verilerin nasıl depolandığını bakım ve veri nasıl hesaplandığı umurumda değil görünümleri yok algoritmaları yazabilirsiniz böylece önemli bir parçası kavramları dışarı ayıran.

Bence, değil belirli bir tablonun bir object type bir model olarak bir model düşünmek daha iyidir.

Genellikle, MVC framework etiketleri ve dişler için modeller içinde tanımları tarafından çok-çok ilişkileri ele olacaktır.

Ve kesinlikle her model için bir kontrol gerekmez; denetleyicileri genellikle daha yakından (birden çok kez bir kontrolöre genellikle vardır gerçi) görünümleri ile ilgilidir.

Burada memnuniyeti için cevaplanması mümkün bir soru çok genel gibi bu görünüyor.

Bir model bundan daha dinamik olabilir. Eğer bir blogunuz varsa, ve bir blog etiketleri varsa Örneğin, modeliniz Blog adlandırılabilir ve Etiketler bir koleksiyona sahip olabilir.

Bir model verilerini saklayan bir şey olabilir. Ben üzerinde çalışıyorum web uygulaması onlar böylece ait ve gruplar kişileri, onların adresleri için çeşitli tablolar vardır. Bu türlerine göre onları bölmek için en iyisi, ben bir grup modeli yapmış olmalı ama kesinlikle bunu yapmak zorunda değilsiniz.

MVC relates to 3d games quite well, MVC is not only for information systems. Consider this: In 3d graphics the model is map, the polygons and their positions and colours. The view is the camera from which the scene is viewed, a position, zoom and direction. The controller interprets the keyboard and mouse and manipulates both the camera(view) and scene(model).

If this were a shooter game then if: A user pushes the forward button, the controller moves the camera forward. A user pushes the throw grenade button, controller adds a grenade to the scene.

Görünümü sunum, model depolama / yapıdır ve denetleyici görüntülemek için ne görünümü ve nasıl sisteminin durumuna göre görüntülemek için söyler arasında bir bulunmaktadır.

Genellikle denetleyicileri içine, bir görünümde modelleri ve mantık verileri tüm biçimlendirmeyi koydu.