在我的应用程序中,我有一个View
对象可以load($template)
一个模板,可以使用render()
方法进行渲染。
在我阅读过有关Views
的所有内容中,有时我会看到人们按照我目前的方式进行操作,有时候我会看到人们在做类似以下的事情
class ProductView extends View {
}
class CheckoutView extends View {
}
每页单独View
。
两种方式的优点/缺点是什么?
任何建议都会非常感谢。
答案 0 :(得分:1)
视图不应该是“加载模板”。如果您在视图中包含
$this->load('header');
之类的代码,则会违反SRP。查看(有时)使用模板为用户创建响应,但不应创建响应。
在大多数关于视图的文章中,您将了解Rails(及其克隆)对视图的解释。在RoR中,您没有视图。只有一个美化的哑模板。
表示层的结构使您最好在控制器和视图之间建立1:1的关系。每个视图负责处理由用户输入触发的响应。因此:您的页面通常每个执行时间有一个一个视图。
在更复杂的情况下,您可能希望研究composite view的概念。此方法允许您以较小的块分隔表示逻辑。如果您使用ViewModel。
,这也可以让您更轻松地构建代码最重要的是:如果每个应用程序都有一个视图,那么你做错了。
答案 1 :(得分:0)
每页一页视频绝对最适合网络。注意我并不是指一个每个控制器的视图,而是每个不同的页面。您希望具有可由不同视图(例如页眉,页脚或导航栏)调用的不同模板。
例如,在BlogPostView
内你可以:
$this->load('header');
$this->load('post', $data);
$this->load('footer');
然后用:
渲染它$this->render();
答案 2 :(得分:0)
它没有“唯一真正的解决方案”。 但就我而言,View必须尽可能简单。喜欢printf功能。你想扩展printf行为吗?我想不是!