2011-11-17 61 views
0

就最佳实践而言,在使用MVC框架时,说每个控制器应该有相关的模型是否公平?只有一个模型?PHP MVC最佳实践 - 每个控制器的模型?

或者,它应该更分离,在为特定目的创建模型时,它们可以在应用程序的任何位置使用?

谢谢!只要对任何建议感兴趣

+2

你是从哪里得到“每个控制器一个(也是唯一一个)模式”的想法?从来没有听说过那个。 –

+1

我没有每个控制器的单独模型,本身。我所做的是我有各种用途的模型,比如“contacts”,“articles”,“comments”。我在任何控制器中使用他们需要的模型。 –

+0

它们是模型,而不是补充......一个控制器---它需要详细说明其数据的所有模型---它需要显示这些数据的所有视图。 –

回答

3

如果框架遵循每个控制器关联一个模型的模式,那么可以说每个控制器都应该有一个关联的模型(并且只有一个模型)。但是,如果您使用的是这种类型的MVC框架,那么您还没有写过,因此,回到一般的MVC框架:不,这是不公平的。可以这样说:做任何你想做的事,如果你使用的框架允许你使用任何模型和你想要的模型。

0

这是一种常见的误解......您应该为每一批信息使用一个模型。每张桌子不一个。您应该“通常”每个模型都有一个控制器,因为您通常以单位管理这些信息,但是没有任何东西阻止您为“shoppingbasket”设置控制器,并且没有针对它的特定模型...

Models = code representation你在你的数据库具有数据

控制器=代表行动使您的用户可以做一般的导航逻辑...

+1

模型可能比数据库模型更多。控制器不得代表行为。所以+1对于常见的误解,但-1也是这样做的。 – hakre

+0

大多数人只与数据库一起工作,但你对模型的正确性不止是数据库数据。它可以是xml文件或多个数据源的复杂排列。关于控制器,我的意思是说,这是用户可以执行的操作的安排,控制器负责确保流量正常。有点像业务逻辑控制器,但对于操作流而言,不适用于数据。 –

+0

Models(some):[Presentation Model](http://martinfowler.com/eaaDev/PresentationModel.html),[Domain Model](http://martinfowler.com/eaaCatalog/domainModel.html);控制器(一些):[页面控制器](http://martinfowler.com/eaaCatalog/pageController.html),[Front Controller](http://martinfowler.com/eaaCatalog/frontController.html),[监督控制器]( http://martinfowler.com/eaaDev/SupervisingPresenter.html)。您的示例再次误导了模型,您将使用文件和XML作为数据库,因此您实际上仍然在谈论db模型,但模型不仅仅是db抽象。 – hakre