在构建应用程序时,最好的方法是确定应用程序的位置。你怎么知道什么功能放在什么控制器和模型中。例如,我正在构建一个高度基于位置的应用程序。用户可以发布不同的内容,然后在一定距离内向其他用户显示。此外,每个用户都有自己的个人资料页面,该页面将显示该用户发布的所有内容,无论其位置如何。
所以我有这样的模型
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中处理位置(需要一个邮政编码),然后其他一切都有自己的模型。
我想知道什么是最好的方法来弄清楚到底是什么,这种东西是否有经验法则?
答案 0 :(得分:1)
那么你已经80%了。你已经打破了你的模型,这是一场大战。接下来设计您想要的应用程序。如果您在多个页面上最终会有大量重复的“元素”,那么每个元素都应该是一个视图。否则每个页面都应该是一个视图。或两者的某种组合。
一旦定义了页面并且您知道应用程序的数据流,剩下的就是控制器。
在小型应用程序中使用单个控制器可能很实用。或者对于非常复杂的应用程序,您可能有多个控制器 - 但每个“页面”不超过一个。
请记住 - 模型应该是视图不可知的(您可以在不影响模型的情况下重新调整UI)。视图应该对数据来自哪里或者去哪里都是盲目的 - 一切都通过控制器进行过滤。
请参阅我之前对类似问题的回答here:
答案 1 :(得分:0)
我通常使用这种方法:试着把它放在某个地方。如果过了一段时间你使用它,感觉很尴尬,那么它就不是在正确的地方。
通常,每个模型类都应该有对自身有意义的方法,并最终返回其他模型。避免在模型中加入过多的计算智能。如果在任何一个班级中都有一些感觉奇怪的东西,那么可能会发现它们之间有第三类。