|
|
1
8
和所有编程一样,我们需要务实。视图应该只包含表示逻辑。这个逻辑可能非常简单,也可能非常复杂。只要该逻辑只处理屏幕上显示的内容、报告上打印的内容等。
你传递的是什么信息?可能是模型的子集。您可以创建一个新类,该类只包含视图应该知道的信息,或者只传递模型,并确保只访问适当的数据。无论如何,视图应该可以自由查询这个传入的模型,以便能够显示视图。 争论的焦点是,如果你能从这个角度直接更新模型,绕过控制器。这就是务实的一面。我认为有些情况下可以直接更新模型。尤其是如果您可以使用数据绑定。可以将文本框指定给模型的属性,并自动进行更新。如果有很多简单的属性设置,这种方法可以在控制器中保存一堆代码。mvc不是一成不变的规则。正确使用时可以产生更好的代码,但如果使用过于严格,则会导致痛苦和痛苦。 要务实! |
|
|
2
9
没有一种绝对正确的方法可以实现mvc。变化是可能的。 例如,控制器可以使用某种通知机制将模型中的任何更改通知视图,而不是让视图主动查询模型。在这种情况下,视图只是监听更新,然后这些更新会被呈现出来。 |
|
|
3
3
这可能不是人们所说的“纯”mvc,但我想,只要视图php代码没有改变模型,这也不是什么大不了的事情。mvc最重要的规则是模型不知道视图。不了解模型的视图就不那么重要了。 直接使用模型的主要缺点是视图不能与其他模型一起重用。这很少是个问题,因为视图几乎总是特定于一种特定类型的模型对象(或其列表)。 |
|
|
4
2
以下修改是否 DisgruntledGoat's code snippet 被认为太“复杂”?应该将对象传递到视图吗?
或者?
我见过几个只使用数组的例子:
|
|
5
1
mvc指的是层,而不是组件。所以它们是更抽象的概念,而不是蓝图。由于不可能完全分离这些层(信息必须在它们之间流动),这实际上是一个连续统一体,在一个极端的系统上有意大利面,在另一个极端的系统上有官僚作风。你可能想在这两者之间找个地方。 我通常不会在控制器视图分离上花费太多精力。模型和(控制器视图)之间的分离更为重要。 |
|
|
6
1
MVC不是一成不变的法律。这取决于你从哪里读到的,它可能有所不同。我个人不允许视图直接从模型中读取。 更新 这个 post 也有一些很好的例子。模型是使用start()类似方法的汽车引擎,视图是使用paint()或change()方法的汽车颜色,控制器是驱动程序。我更喜欢让控制器驱动汽车并启动发动机,而不是让车轮或油漆来驱动。 :) |
|
|
7
1
我认为您绝对正确-视图不应该调用模型中的方法。正如其他人所说,mvc有一些变化,但它的重点是将逻辑与数据从输出中分离出来。 所以通常,您有一个控制器,它是应用程序的起点。在php中,这将是index.php文件。这个文件至少会处理输入数据(即查询字符串或url参数)。为应用程序的不同部分添加单独的控制器通常是一个好主意。 然后,每个控制器简单地决定需要显示哪些数据,从模型中获取数据,并将其传递给视图。在php中,您可以调用各种类/方法来从数据库中获取数据,并将其存储在变量中。 然后,您只需包含另一个php文件,该文件主要包含html,但包含一些php回显变量。循环也很好。如果你有一个清单,你可能想做这样的事情:
|