Mvc Genel ...

8 Cevap php

I’m trying to learn ve fully understve mvc pattern ve learn php at the same time. I decided to built basic mvc framework that I could use on various projects later on. Having read lots of posts in here regarding mvc ve coupling between models/views/controllers I’m a bit lost.. At the moment my understveing is that in web application controllers deal with coming request from browser ve, if necessary, calls methods on model classes telling models to change its state. Then controller instantiate appropriate view class that will be responsible for displaying interface. Here's the bit I don’t understve...

  1. Şimdi görmek için uygun bir model nesne geçirmek kontrolör edilmeli ve gerektiğinde görünümü modeli tüm verileri dışarı çekmek gerekir?

  2. Veya denetleyici modeli veri kapmak ve muhtemelen oradan erişmek ve kapmak verileri olacak görmek tek sarıcı nesnesinin içine tüm sarma, görüntülemek için geçmesi gerekir?

  3. Veya görünüm gerektiğinde sadece uygun modeli örneğini ve model nesne verileri doğrudan dışarı çekmek gerekir?

Ben burada okumak ne

http://www.phpwact.org/pattern/model_view_controller

Ben denetleyici görüntüleyebilir ve ihtiyacı modeli başlatır şey geçmez 3 seçenek doğru eğilmek istiyorum. Bunun nedeni,:

  1. görünüm ve denetleyici model aynı erişimi olmalıdır

  2. denetleyici basitçe görünümü ve model arasında arabulucu olarak hvardırket etmemelidir.

Bunu yapmak için tek doğru yol gerçekten var mı yoksa proje oldukça bağlıdır? Ayrıca hangi yaklaşım OOP iyi bir anlayış var ama php için nispeten yeni ve mvc mimarisi üzerinde çok açık değildir birine tavsiye ederim. Veya belki de (;) gerçi bu bir kaçının istiyorum bana doğru gibi görünüyor ne olursa olsun gidip benim hatalarımdan öğrenmek gerekir?

Şimdi benim sorum .. Ayrıca ben stackoverflow ve farklı sitelerde çok sayıda makaleleri mesajların çok okudum, ama yine de yardım bekleriz sonra daha iyi anlatmaya çalışacağım belli değil varsa bana bildirin lütfen bu nedenle tüm cevaplar için şimdiden teşekkürler.

8 Cevap

Şahsen ben her zaman 3. bir savunucusu oldum. Görünümü denetleyicisi umurumda değil gerekir. Görünüm bu konuda denetleyici herhangi bir bağımlılık olmamalıdır. Bunu yapmak gerekiyor ne yapmalıyım, modelin bir görünüm göstermektedir.

Kontrolünün temel akış böylece olmalıdır: denetleyici bir tarayıcıdan bir istek alır. Bu modelde herhangi bir güncelleme yapar ve bu durum ilgili olan, ve daha sonra bir görünümü seçer. Kontrol daha sonra modelinden veriyi alır ve işler görünümü, geçirilir.

Bir uzantısı olarak, kullanıcı girişi modelin parçası olarak düşünebilirsiniz olabilir ve denetleyici ve görünümü hem ondan okuyabilir. Götürmek için anahtar nokta Kontrolör ve Görünüm birbirlerine hiçbir bağımlılık sahip olmasıdır. Desen MVC denir yüzden.

Şimdi, kişisel olarak, ben MVC biraz da sıkıcı bulmak, ve bu yüzden genellikle Kontrolörü conflate ve bu daha fazla görüntüle. Ama o zaman gerçekten MVC değildir.

Şahsen ben her zaman 2. bir savunucusu oldum. Görünümü modeli hakkında bakım gerekir. Görünüm bu konuda hiç bir işlem olmamalıdır. Bu format veri yapmak için gerekeni yapmalıdır.

Kontrolünün temel akış böylece olmalıdır: denetleyici bir tarayıcıdan bir istek kucaklayacak. Bu isteğini işler, veri gerekli ne karar verir, ve model / s onu alır. Daha sonra görünümüne veri geçer hangi formatta veri ve görüntüler onu.

Bir uzantısı olarak, kullanıcı girişi kontrolör içine işlenir ve gerekirse bir model haline kaydedilmiş, daha sonra geribildirim götürmek için anahtar nokta bu işlem denetleyici içinde olur vs, bir görünüm içine beslenir.

Web MVC ve Masaüstü MVC iki çok farklı hayvanlardır.

Web MVC, bir Görünümünde bir bağlantı modeli güncelleştirir ve ardından bir Model açılır ve ne ihtiyacı gösteren bir uygun olanı View, yönlendirir Controller, üzerinde bir yöntemini çağırır.

Görünümü ve modeli hem de aynı başvuru kullanmanız gerekir çünkü Masaüstü MVC, seçenek 3 yanlış olduğunu. Web, başka seçenek yok.

Seçenek sayısı 2 MVC değildir. Presenter bir arabulucu olup bu, MVP bulunuyor.

Bir Kontrolör yaz-Erişim bir Modeli; Bir Görünümü yalnızca okuma erişimi vardır.

This is a very interesting question. From my experience most implementations in php assign a model variable to the view:

$this->view->my_property = $modelObj->property

This is common practice. The common reasoning for this is that if you send the object then you can call methods that modify the object from the view.

//in the controller file
$this->view->myObject = $modelObj;

//in the view file, you could call an object modifying method
$this->myObject->delete();

Ve görünümünden modelini değiştirerek kötü bir uygulama olarak kabul edilir. Onların tasarımcıları görünümünde modeli modifiye yöntemleri çağırmak mümkün istemiyorum Bazı insanlar bir şey.

Söyleniyor. I don't yaygın bir uygulama ile kabul ve görünümüne bütün nesne atamak ve oradan göstermek eğilimindedir. Ve sadece orada işlemlerini yapmak değil benim kendi disiplin.

Ve üçüncü bir seçenek görünümüne bütün nesne atamak olduğunu. onlar görünümü denir, ama nesneleri nasıl bazı yöntemleri devre dışı bırakın.

I "push" veya "pull" modelin daha iyi olduğunu ne iddia bu sadece genel bir olduğunu düşünüyorum. Hayır "kesinlikle" en iyi çözüm yoktur.

Ben daha önce çok benzer bir soru vardı. Ben aşağıdaki gibi düşünmek yararlı buluyorum:

MVC
Model -- Data store, alerts Views of changes
View -- Displays model, provides hooks for user interaction
Controller -- Handles user input

Sınıfların sürü birbirinden eşzamanlı etkileşimde olmayan web uygulamaları, daha sık MVC kullanmak istiyorsunuz.

Bir web uygulamasında MVC gelir MVT (Model-View-Template)

Model -- Strictly a data store, typically an ORM solution
View -- Handles web requests, provides for user input/output
Template -- Actually displays content (HTML, Javascript, etc.)

Yani bir web uygulamasında sunum Kalibindaki ele, uygulamanın arkasında mantık Görünümü (veya görünüm tarafından çağrılan sınıflar) ele, ve model verileri tutan sorumludur.

Ben modeli ve görünümü arasında bir arabulucu olarak hareket denetleyicisi olan doğru eğilimindedir, ancak genellikle bu anlamıyla birlikte üç bağlayan tek bir kod satırı. Senin model, görünüm ve denetleyici düzgün dekuple iseniz kullandığınız çok az fark yapmak gerekir.

MVC kısaltma yanlış o yazılım geliştirme içine geldi günden itibaren ifade edildi çünkü pek çok geliştiricileri bugün MVC vuruş alamıyorum neden nedeni, ancak kavram geri sonra ve bugün de doğru. Ben eski okul olduğum, bana sizin için anlatalım; Eğer bir nesne oluştururken ilk ne nesnenin yapılmış olacak nasıl üzerinde tam kontrole sahip olacak onaylandıktan sonra yani müşteri, o bilgileri bir modeli oluşturmak. İşte bu ürün üretiminde bu gün böyle.

Bugünün web uygulama geliştirme gibi vadeli VCM olmalıdır. Neden! Bu web tarayıcısında ne görüntüleyin ve sonra bu Kontrolör olarak bilinen, eylem için bir düğmesini tıklatın. Kontrolör bir sonuç üretmek için talimat veya mantık Modeli, (senin yazısıdır) uyarır. Sonuç daha sonra görüntüleme için kullanıcıya geri gönderilir. Yazılım mühendisliği, sen CMV olarak bakın olabilir; kullanıcı uygulamalar derlenmiş ve yüklü kadar bir şey görmek mümkün değil çünkü. Bu yüzden bir kontrol cihazı (PC) ihtiyacınız olacak; sonuçlarını görüntülemek için modeli ve bir monitör olarak işletim sistemi. Bu kavramları anlamak durumunda, MVC çok daha iştah açıcı başlamalıdır. Ben bu kavramı kimse MVC anlamak için size yardımcı olacağını umuyoruz.