【问题标题】:Trying to understand MVC - am I already doing it?试图理解 MVC - 我已经在做了吗?
【发布时间】:2011-04-04 04:36:43
【问题描述】:

我很快就开始涉足越来越大的应用程序,所以我认为了解什么是模式以及它们如何工作等是个好主意。所以,我在 youtube 上观看一些教程并阅读出现了一些关于模式和设计原则以及 MVC 的书籍。我听说过它,但从未真正理解它,并且尚未使用 Zend 或 CodeIgniter 或其他本质上使用它的工具。

反正在研究MVC这个话题的过程中,好像已经在用了。有人可以验证吗?以下是我通常使用登录系统设置应用程序的方式:

login.php - 这是显示表单的 html 页面。表单提交给:

process.php - 这个类检查提交的值,并根据该值验证输入,检查密码,发回适用的错误,如果一切正常,它会实例化一个用户对象:

user.php - 这是一个模板化用户需要的属性和方法的类,包括将用户添加到数据库、提取个人资料信息、注销、实例化私人消息等内容来自用户的对象,设置所需的会话变量等。然后将信息返回到 process.php,然后 header 重定向回主页并成功登录。

那么...这是一个简单的 MVC 吗?在我做的学习中,登录听起来像视图,进程听起来像控制器,用户听起来像模型。我敢肯定这里有更深入的内容,但我真的很想把这些东西包起来,所以对我的逻辑进行任何调整都是非常受欢迎的。谢谢。

【问题讨论】:

  • 关于 MVC 最重要的是模型 - 控制器和视图之间的关注点清晰分离。在 php 中,我建议您查看 symfony-project.org(版本 1.1 - 1.4),因为它有一个清晰的 mvc 环境,有很多教程和书籍。

标签: php model-view-controller design-patterns design-principles


【解决方案1】:

MVC 是一种将应用程序的三个主要部分分开的方法,目的是提高可维护性,并且通常与它一起提高性能。

例如,如果您使用的是 PHP 5.3(您应该使用,后期静态绑定、命名空间等非常有用!),您可以为应用程序的每个部分使用命名空间。然后,当您的应用程序逻辑出现错误时,您确切地知道您需要转到模型以执行特定操作并修复它。

视图允许我们将显示逻辑与应用程序的业务逻辑分开。有些人可能会使用带有内联<?php echo $myVar; ?> 之类的XHTML,而有些人可能更喜欢模板。这意味着当您编辑应用程序的 GUI 或其他面向外部的部分时,它永远不会对您的业务产生任何影响。

这意味着您的所有代码都井井有条并提高了可维护性,同时还模块化了您的应用程序。如果您使用自动加载器(总是使用spl_autoload_register('myAutoloader') 而不是function __autoload($className),因为它可以被库和其他东西覆盖)那就更好了,这样您的应用程序只会在需要时加载需要的内容。

【讨论】:

    【解决方案2】:

    简而言之,您所拥有的是 MVC 模式的准系统基础。

    MVC 范例中经常提到的一个短语是“胖模型,瘦控制器”。通常您的验证应该在模型对象中完成。控制器应尽可能轻。

    【讨论】:

    • 这听起来可行 - 我对验证的想法是它不会成为 User 对象的一部分,因为需要检查是否应该创建用户 - 我'我想也许一个验证类作为一个附加模型,然后控制器可以从中获取回报并根据需要进行指导。感谢您的帮助。
    【解决方案3】:

    您的 3 页听起来很像 MVC。然而,使用像 Codeigniter 或 Zend 这样的框架来让您编写更严格和可维护的代码总是有帮助的。

    【讨论】:

    • 我现在正在寻找 CodeIgniter,因为它的学习曲线似乎不那么强烈,而且看起来相当轻巧。感谢您的帮助。
    • 到目前为止,我在 CI 方面的经验非常丰富。它是轻量级的,有据可查的,有一个活跃的社区,该社区最近从 EllisLab 分叉了该项目,并将其开发为 CI Reactor。轻量级,因为您可以动态加载组件。
    猜你喜欢
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    相关资源
    最近更新 更多