【问题标题】:MVC which is the better practice? [closed]MVC哪个是更好的做法? [关闭]
【发布时间】:2012-08-24 18:48:52
【问题描述】:

我有一个存储过程、一个控制器和一个模型

我应该在我的过程或模型中在哪里进行数据库错误检查[没有行返回、表的主键冲突、指定的值无效等?]?我应该从哪里向用户显示消息[更新成功,无法执行语句等]?

什么是更好的做法?

【问题讨论】:

  • 存储过程不是视图,并且由于您没有提供有关控制器和模型的更多详细信息 - 您将获得的答案将非常有限。另外,听起来它与MVC无关,我将问题简单地更改为:“存储过程的错误检查应该在哪里”。

标签: php model-view-controller


【解决方案1】:

错误检查应该发生在模型层。

具体来说,在data mappers 或其他处理数据抽象的结构中。如果您使用 PDO,SQL 错误会引发异常,这是在存储抽象级别处理的。这是通过将错误状态分配给您当时存储或填充的domain object 来完成的。

控制器存在于完全不同的层:表示层。它不应该意识到由模型层处理的领域业务逻辑的内部问题。这将导致leaking abstraction

视图在收集要显示的信息时,应首先请求它使用的services 以返回状态。如果服务通知视图现有的错误状态,视图请求更详细的信息,并决定如何对错误做出反应以及使用哪些组模板来可视化错误状态。

【讨论】:

    【解决方案2】:

    是的,所有的错误信息和显示项都应该在 View 中处理,而数据库错误检查可以在模型中完成。

    【讨论】:

    • 不,您可以选择在view显示错误消息,但错误不应由它处理。数据(和错误)处理应由model 完成。
    【解决方案3】:

    在我看来,数据库错误检查应该进入模型,显示(一切)将进入“视图”层。你可以在这里找到一篇关于制作 MVC 框架的好文章:

    http://anantgarg.com/2009/03/13/write-your-own-php-mvc-framework-part-1/

    【讨论】:

    • -1:糟糕的链接。充满了不良做法和对 MVC 的完全不正确的描述。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 2021-06-09
    • 2010-10-12
    • 2011-03-05
    相关资源
    最近更新 更多