2009-11-04 67 views
2

目前,我正在重组现有的代码库。我是新来的PHP框架,但我一般知道MVC的工作原理。关于MVC的快速问题在PHP

现在,有一个控制器文件,一个模型文件和三十个视图文件。

每个模型应该对应一个表吗?

应该每个视图对应一个html页面吗?

控制器怎么样?我怎样才能将这一千行怪物分解为更多有组织的代码。

谢谢。

回答

4

如果每个模型对应一个表?

号公报模型通常从来自多个源的数据构成。不要认为将它绑定到物理数据库结构,尽管可能最终会有很多相似之处。

如果每个视图对应一个HTML页面?

不是听起来陈腐,而是每个视图都应该对应一个视图。我不确定你的意思是什么“页面”。

也许一个例子会很有用。想象一下用户注册页面。该模型是用户,可能包含的字段,如:

  • 标题
  • 赐名
  • 出生日期
  • 用户名
  • 地址(ES)
  • 电子邮件地址
  • 电话号码
  • 等现在

,该数据可以是在多个表中。例如:派对,人物,联系人和地址。

有可能会是几个观点:

  • 关于页面
  • 窗体页(用于新注册,并可能修改细节,以及错误);
  • 成功页面;
  • 失败页面。

通常,所有这些将由单个控制器处理,因为所有过程都是相互关联的。

+0

那么千线控制器是可以预期的吗? – Dirk 2009-11-04 06:54:03

+1

如果你需要1000行控制器来注册用户,那么你做错了什么。 – cletus 2009-11-04 07:21:43

0

每一个模型都应该对应于一个逻辑数据对象 - 这应该通常主要被存储在一个表(具有外键入其他表经常,由于模型一般需要引用其他型号)。

每个视图应该对应于查看数据的逻辑方法(例如,在计算器,有希望的徽章页面,标签页等列表视图列表视图)。

每个控制器应该对应一个逻辑分组的视图,它不应该太大(其中太大是文件变得无法管理的行 - 如果您有30个视图,您可以希望找到将他们分组为3个控制器的合乎逻辑的方式)。

0

怎么样的控制?我怎样才能将这个千行怪物分解成 更有组织的代码。

看看CakePHP框架以及它如何解决大型模型,控制器和众多视图的问题。我觉得它很优雅。复杂模型可以有行为。大型控制器可以分成组件。和许多意见与布局分组,而具有分离成元件共同位。听起来可能听起来很复杂和可怕,但一旦你尝试使用它,它确实会落到实处。

0

是否每个模型都对应一个 表?

它并不一定,但它往往会取决于您的业务逻辑的复杂性。

既然你重构现有的应用程序,想想模型是如何使用的其他层。在MVC中,模型位于依赖堆栈的底部。

视图如何访问模型?控制器如何修改它?该模型将如何填充?

应该每个视图对应一个 html页面吗?

再次,它没有到,但它往往会。

怎么样的控制?我怎样才能将这个千行怪物分解成 更有组织的代码。

通常的策略是使用前端控制器模式。前端控制器处理HTTP请求,应用程序初始化和站点范围的逻辑(就像你的千线怪物目前正在做的那样) - 但是随后它委托给更专业的控制器。

这些专门的控制器可以按照它使用的模型,站点页面结构或任何其他看起来合乎逻辑的东西进行分组。然后他们与模型交互并选择一个视图来显示。

最后,对Leonid建议的框架+1。即使你最终没有使用控制器模式,也有一些很好的控制器模式实现。

希望有所帮助。