0

在我的应用程序中,我有一个View对象可以load($template)作为模板准备好使用该render()方法进行渲染。

在我读过的所有内容中,Views有时我看到人们以我目前的方式做事,而其他时候我看到人们做类似以下的事情

class ProductView extends View {

}

class CheckoutView extends View {

}

View每页有一个单独的。

两种方式的优点/缺点是什么?

任何建议都会非常感谢。

4

3 回答 3

1

视图不应该是“加载模板”。如果您$this->load('header');在视图中有类似代码,则违反SRP。View(有时)使用模板为用户创建响应,但它不应该创建它们。

在您将遇到的大多数关于视图的文章中,您将阅读 Rails(及其克隆)对视图的解释。在 RoR 中,您没有视图。只是一个美化的愚蠢模板。

表示层的结构使您最好在控制器和视图之间建立 1:1 的关系。每个视图负责处理由用户输入触发的响应。因此:您的页面通常会在每个执行时间有一个视图

在更复杂的情况下,您可能需要研究复合视图的概念。这种方法使您可以将表示逻辑分成更小的块。如果您使用ViewModel,这也使得构建代码变得更加容易。

底线是:如果您对整个应用程序只有一个视图,那么您做错了。

于 2013-03-31T10:55:36.370 回答
0

每页一次浏览绝对是最适合网络的。请注意,我的意思不是每个控制器一个视图,而是每个不同的页面。您希望有不同的模板可以被不同的视图调用(例如页眉、页脚或导航栏)。

例如在里面BlogPostView你会有:

$this->load('header');
$this->load('post', $data);
$this->load('footer');

然后渲染它:

$this->render();
于 2013-03-31T10:29:34.257 回答
0

它没有“唯一真正的解决方案”。但对我来说,视图必须尽可能简单。比如 printf 函数。你想扩展 printf 行为吗?我想不是!

于 2013-03-31T10:46:20.623 回答