Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 组织应用程序的最佳方式?。。。。(MVC设计模式)_Php_Model View Controller - Fatal编程技术网

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

Php 组织应用程序的最佳方式?。。。。(MVC设计模式),php,model-view-controller,Php,Model View Controller,在构建应用程序时,什么是决定什么应用到哪里的最佳方法。您如何知道在哪些控制器和模型中放置哪些函数。例如,我正在构建一个高度基于位置的应用程序。用户可以发布不同的内容,这些内容将在一定距离内显示给其他用户。此外,每个用户都有自己的个人资料页面,该页面将显示该用户发布的所有内容,而不考虑位置 所以我有这样的模型 class UserModel extends BaseM{ get_user($uid); get_all_users(); edit_user($new_data); d

在构建应用程序时,什么是决定什么应用到哪里的最佳方法。您如何知道在哪些控制器和模型中放置哪些函数。例如,我正在构建一个高度基于位置的应用程序。用户可以发布不同的内容,这些内容将在一定距离内显示给其他用户。此外,每个用户都有自己的个人资料页面,该页面将显示该用户发布的所有内容,而不考虑位置

所以我有这样的模型

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中将处理用户(需要用户ID)的所有内容都集中在一起,在localModel中将处理位置(需要邮政编码)的所有内容都集中在一起,然后其他所有内容都有自己的模型


我想知道什么是最好的方法来弄清楚什么东西去了哪里,这类东西有没有经验法则?

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


一般来说,每个模型类都应该有对自己有意义的方法,并最终返回其他模型。不要在你的模型中加入太多的计算智能。如果在两个类中都有感觉奇怪的东西,那么在这两个类之间可能会有第三个类被发现。

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

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

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

请记住-模型应该是视图无关的(您可以在不影响模型的情况下重新配置UI)。视图应该不知道数据来自何处或将要去何处-所有内容都会通过控制器进行过滤


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

这取决于您使用的框架(如果有的话)。大多数框架在MVC解释和实现上都有所不同。你所说的“最终返回其他模型”是什么意思?如果你有一个表示汽车对象的模型类,那么有一个方法getEngine()来获取引擎的模型对象。