【问题标题】:understanding mvc: difference between a library class and a model class理解mvc:库类和模型类的区别
【发布时间】:2010-04-09 12:22:05
【问题描述】:

所以我想遵循 mvc 约定,但还没有真正掌握它。

我无法理解模型和库类之间的显式区别以及它们之间的关系。

例如。我想创建类来添加/编辑联系人并将它们添加到组中。

我认为它应该分为 2 类:联系人和组。

第一个类将创建一个联系人。另一个会将联系人添加到组中。我认为这种划分将是完美的,因为它们的逻辑彼此隔离。联系人不关心组是否存在。群组并不关心联系人的外观。

所以Contact会有这些方法:

$Contact->add($name, $email, $address, $phone) // create an entry in database
$Contact->delete($id) // delete the entry in database
$Contact->edit($id, $name, $email, $address, $phone) // edit the entry in database

和组:

$Group->createGroup($name) // create a group in database
$Group->delete($id) // delete a group in database
$Group->addContact($groupId, $contactId) // add a contact to a group in database

所以这些类显然可以与数据库一起使用。这是否意味着这些是模型?或者他们是图书馆类,例如。应该放在 CodeIgniter 的 SYSTEM/LIBRARIES 中。如果是后者,那么在这种情况下,模型如何使用类?

在这种情况下控制器会是什么样子?

如果有人能给我大图,那就太好了!谢谢!

【问题讨论】:

    标签: php model-view-controller


    【解决方案1】:

    MVC 模式 没有库的概念。您指的是 MVC frameworks 的一般使用模式。那就是有一个模型文件夹,其中包含通常派生自通用、可重用和独立于应用程序的库类的特定于应用程序的类。

    【讨论】:

    • 是的,也许我不清楚这一点。我知道 mvc 与库类无关,所以我想知道这两个类是我应该在模型中使用的 MODELS 还是 LIBRARY 类。因为我知道这两个可以在其他应用程序中使用,这使它们更像独立的库类?所以我应该创建一个模型类来使用这两个库类?
    • @ajsie 由于提到的类在这个特定的应用程序之外做一些没有意义的事情,它们是我书中的模型。您已经为这个应用程序编写了它们。它们不是抽象,而是具体用例的具体类。
    • @gordon,阅读我更新的第一条评论。嗯,我认为它们可以用于其他应用程序来创建地址簿?
    • @ajsie 是的,您可能可以重用它们,但它们将成为地址簿框架中的库类。您必须了解关键区别。该模型包含构成应用程序核心的所有内容。它是特定于您的应用程序的所有业务逻辑、服务层、数据库适配器等。可以说,库是框架的模型,用于构建您的应用程序。这有意义吗?
    • 是的,只是很难知道确切的区别。你能说一个经验法则来明确mvc类和库类之间的界限是如果你必须修改代码以适应你的应用程序,那么它肯定是一个特定于应用程序的类,换句话说,一个mvc班级。导致库类不必更改我猜?正如你所说,我可以在其他应用程序中将通讯簿作为组件重用,并且数据库结构随之而来,所以它应该被称为带有 mvc 的组件(并且这两个是模型)。我正确吗?
    【解决方案2】:

    通常模型就像对象,它们与数据库交互,具有变量和函数,并且是可重用的。

    库通常是一组辅助函数,用于处理数据/执行操作。

    【讨论】:

      猜你喜欢
      • 2014-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-09
      • 1970-01-01
      • 2010-09-14
      相关资源
      最近更新 更多