我有存储过程,控制器和模型。
我应该在我的程序或模型中执行数据库错误检查[没有行返回,表是否存在冲突的主键,指定了无效值等?]?我应该从哪里向用户显示消息[更新成功,无法执行语句等]?
什么是更好的做法?
答案 0 :(得分:4)
错误检查应该在模型层中进行。
具体而言,在data mappers或其他处理数据抽象的结构中。如果您正在使用PDO,则SQL错误会引发异常,这是存储抽象级别的句柄。这是通过将错误状态分配给您当时正在存储或填充的domain object来完成的。
控制器存在于完全不同的层:表示层。它不应该知道域业务逻辑的内部问题,它是由模型层处理的。这将导致leaking abstraction。
在收集要显示的信息时,视图应首先请求其使用的services返回状态。如果服务通知视图有关现有错误状态,则查看请求更详细的信息,并决定如何对错误做出反应以及使用哪些组模板来显示错误状态。
答案 1 :(得分:1)
是的,所有错误消息和显示项都应在View中处理,因为数据库错误检查可以在模型中完成。
答案 2 :(得分:0)
在我看来,DB错误检查应该进入模型,显示(所有)进入“视图”层。你可以在这里找到关于制作MVC框架的好文章:
http://anantgarg.com/2009/03/13/write-your-own-php-mvc-framework-part-1/