【发布时间】:2013-07-13 21:16:31
【问题描述】:
我远不是 MVC 的 V 领域的专家,并且最近一直在尝试不同的 View,我目前正在尝试的可能甚至不是带有名称的正确 View,这只是我想出的东西.
在我的应用程序中,Customer 可以将Request(交付请求)发送到Courier。
Request 有 4 个状态:
- 已发送
- 已取消
- 拒绝
- 接受
我有一个RequestView,它扩展了我的View。我在构造时将Request 实体注入到我的RequestView 中,并根据Request 在RequestView 中的状态选择适当的模板。
我的RequestView 有一些方法,例如:
protected function getStateText() {
switch( $this->request->getState() ) {
case Request::STATE_SENT:
return 'Sent';
case Request::STATE_CANCELLED:
return 'Cancelled';
case Request::STATE_REJECTED:
return 'Rejected';
case Request::STATE_ACCEPTED:
return 'Accepted';
default:
return 'Error';
}
}
然后我可以通过调用在我的模板中使用它
echo $this->getStateText();
在 Request 实体中,我只使用 INTEGER 处理状态,当我在表示层时,没有人希望以数字格式查看状态,他们希望以文本形式查看当前状态,这就是为什么我在表示层而不是实体本身中有getStateText() 方法。我的想法/推理在这里正确吗?
我当前的实现是好是坏?这种类型的视图有名称吗?
谢谢。
【问题讨论】:
-
我从未听说过有特定名称的那种视图。所以你有一个带有方法的 View 对象,然后你将它扩展为另一种视图?你的观点是如何构成的?根据我的经验,视图通常主要留给 HTML 或其他类似结构,并且编码最少。然后视图模板接收它可以使用的变量。因此,我想不是将视图扩展为具有特定结构,而是向视图发送一个对象,该对象将在正确的位置回显 getStateText() 公共函数。当然,这取决于您的整个 MVC 结构。
-
你可能想在codereview.stackexchange.com 上问这个问题,因为这实际上不是一个特定的编程问题
标签: php oop model-view-controller