1
enj0y 2012-09-25 00:36:57 +08:00
让V处理程序内部异常的可能性非常小。
建议让C处理 |
2
southwolf 2012-09-25 02:00:58 +08:00
正常来讲V里头不应该有(或者尽量少)逻辑代码。。。
|
3
bitsmix 2012-09-25 02:10:01 +08:00
让你们不用 {{mustache}} !
|
4
sivacohan 2012-09-25 03:17:36 +08:00
我的做法是C和M都处理异常。自己的异常自己处理。
但是如果考虑效率。尽量前移吧。V控制一下数据。异常处理放在C。 另外,你说的异常指什么异常?只要遇到文件操作,数据库操作,什么地方都得检测处理异常吧…… |
5
daweiba 2012-09-25 05:08:13 +08:00
你指的异常是?
|
6
zooandzoo 2012-09-25 07:34:46 +08:00
WEB开发吗?异常不属于 MVC 应该框架底层异常模块。。比如数据访问的异常。。文件访问异常。。他们都有自己的异常处理或者共用一个。如果你说的异常指的是 错误验证的话 那就是MODEL的事,不要把异常放在C层,C层不管逻辑处理。
|
7
workaholic 2012-09-25 08:13:23 +08:00
C层,前端控制器里面
|
9
Yuguo OP |
10
zooandzoo 2012-09-25 10:06:42 +08:00 1
@Yuguo 在M层里如果获取不到取不到数据那么return false 返回给控制器,如果你的MODEL有$_error(可以为数组或对象)成员变量的话那么把信息push到里面去。
然后到控制器层用该model对象的getError方法返回错误消息队列,然后用控制器的success或者error方法来跳转到相应的视图显示错误信息 PHP代码 if(!$model->get_next_item($id)){ $errors=$model->getErrors(); $this->error($errors)//跳转 } 你说的叫验证,不叫异常。异常需要TRY CATCHE 仅提供简单思路。。 |
11
avatasia 2012-09-25 10:13:04 +08:00
control里, model有data validation
|
12
qilei0529 2012-09-25 10:43:19 +08:00
@Yuguo
大概明白LZ 的意思,应该是LZ 觉得 在controler 里写一大堆if else 显得冗长不科学,所以才有此文。 可以用文字描述 这类现象。 1. C 问 M_data 要 某分页的文章 data,M_data 给了 C 一段 List 数据,以及page_data 2. C 把 data 数据 简单包装一下甩给 V 中的 data 对象,然后把page_data 甩给 V 中的page 对象。 3. V 显示页面。 LZ 的 问题出在完整的 page_data 数据 由谁来操作? 我的想法是: 如果 page_data 的数据够完整就没事了,不过一般 这个数据不完整。 我的做法是把 关键page_data 数据丢给 V 让 V 中的 page 控件去理清里面的视觉逻辑。 核心思想是 C 负责处理关键数据及事件。 杂事交给 M 和 V 处理。显得它像个老板哈哈。 |
13
AlloVince 2012-09-25 11:15:44 +08:00 1
如果你处理异常的目的是要转到404,建议放在C,一般C才能调度错误的视图。
如果目的是要显示一个空页面,C和M都可以,但是私以为结果为空最好不要作为一种异常,直接返回空值即可,因为本身没有结果也是一种结果。V层根据返回值的有无判断是否显示即可。 |