组织应用程序的最佳方式?....(MVC设计模式)

时间:2009-12-06 23:18:10

标签: php model-view-controller

在构建应用程序时,最好的方法是确定应用程序的位置。你怎么知道什么功能放在什么控制器和模型中。例如,我正在构建一个高度基于位置的应用程序。用户可以发布不同的内容,然后在一定距离内向其他用户显示。此外,每个用户都有自己的个人资料页面,该页面将显示该用户发布的所有内容,无论其位置如何。

所以我有这样的模型

class UserModel extends BaseM{
  get_user($uid);
  get_all_users();
  edit_user($new_data);
  delete_user($uid);
  add_user($new_user);
  get_user_articles($uid);
  get_user_reviews($uid);
  get_user_foo($uid);
}

class ArticleModel extends BaseM{
  get_article($aid);
  get_all_articles();
  add_article($new_article);
  delete_article($aid);
}// similar to ReviewModel, and other models

class LocalModel extends BaseM{
  get_local_articles($zip_code, $range);
  get_local_reviews($zip_code, $range);
  get_local_foo($zip_code, $range);
}// holds all location related functions

正如你所看到的,我把在userModel中处理用户的一切(需要一个userID),在localModel中处理位置(需要一个邮政编码),然后其他一切都有自己的模型。

我想知道什么是最好的方法来弄清楚到底是什么,这种东西是否有经验法则?

2 个答案:

答案 0 :(得分:1)

那么你已经80%了。你已经打破了你的模型,这是一场大战。接下来设计您想要的应用程序。如果您在多个页面上最终会有大量重复的“元素”,那么每个元素都应该是一个视图。否则每个页面都应该是一个视图。或两者的某种组合。

一旦定义了页面并且您知道应用程序的数据流,剩下的就是控制器。

在小型应用程序中使用单个控制器可能很实用。或者对于非常复杂的应用程序,您可能有多个控制器 - 但每个“页面”不超过一个。

请记住 - 模型应该是视图不可知的(您可以在不影响模型的情况下重新调整UI)。视图应该对数据来自哪里或者去哪里都是盲目的 - 一切都通过控制器进行过滤。

请参阅我之前对类似问题的回答here

答案 1 :(得分:0)

我通常使用这种方法:试着把它放在某个地方。如果过了一段时间你使用它,感觉很尴尬,那么它就不是在正确的地方。

通常,每个模型类都应该有对自身有意义的方法,并最终返回其他模型。避免在模型中加入过多的计算智能。如果在任何一个班级中都有一些感觉奇怪的东西,那么可能会发现它们之间有第三类。

相关问题