2012-08-09 62 views
2

我是过去2年的平板PHP程序员。现在我想移动到MVC架构,所以我使用的是codeigniter,看起来很简单。我想知道一些最佳做法,因为我正在开发codeigniterMVC ::哪去哪儿?

我有一个名为controllerbuilding,一个名为building_datamodel和视图称为building_view。现在我想通过检查很多条件来显示建筑物列表。我做平板PHP

  1. 以下从数据库
  2. 分割的结果我们会根据一定的标准A,B,C
  3. 显示结果建筑物的名单中section - Asection -Bsection-c作为输出为HTML

现在MVC我做了以下

  1. 获取建筑名单在数据库上building_data(模型)从building_data
  2. 将结果存储在一个$data阵列building控制器
  3. 根据标准A,B,C在building_view中分割结果并输出HTML(我可以对数据进行基于条件的分类(无需使用) g mysql查询)? !My actual question

我在这里做正确的事情,没有违反MVC架构规则?

+0

你做得对!避免使用大量的PHP代码,避免在控制器中有太多的数据库查询。 – WatsMyName 2012-08-09 04:23:18

+0

_condition based classification_是什么意思?那些标准是什么? – 2012-08-09 04:34:23

+0

@BhuvanRikka Criteria就像建筑物被列入黑名单,是分配给任何人的建筑物,建筑物何时添加,是否在另一个表格中列出建筑物等。实际上,我无法在一个查询中获得所有这些信息。可能有5或6个查询正在运行以生成此页面。我必须根据这5个查询结果对数据进行分类。 – Deepak 2012-08-09 04:53:00

回答

7

MVC是一种设计模式。不是架构。

但是,如果您想要学习最佳实践或MVC,那么CodeIgniter是错误的选择。它充满了糟糕和过时的做法(PHP4代码片段,全局状态和许多其他问题),并且没有实现任何甚至接近MVC模式的东西。它更像是一个PHP的糟糕的Rails克隆。

视图应该是对象,而不是愚蠢的模板。您的控制器应该告诉模型图层用户选择了哪个建筑物,然后查看获取当前建筑物的详细信息,并决定如何表示所有建筑物。

在适当的MVC实现中,视图是包含表示逻辑的实例。他们从模型层获取信息,然后选择使用哪些模板来呈现响应,或者即使HTML响应是必要的。也许用户实际上以JSON或XML格式请求数据。或者,也许该视图需要发送的唯一响应是HTTP标头。你也应该知道,你不能在Web应用程序中实现经典的MVC模式(或者至少它是非常困难的,并且需要使用套接字和持久化模型)。相反,我们使用MVC模式。它们之间的主要区别在于View如何获取来自Model层的信息。

  • 在MVP和MVVM模式中,视图是被动的,并通过类似控制器的结构(透视图,主持人或视图模型)接收数据。
  • Model2 MVC和HMVC模式视图处于活动状态,它直接从模型层请求信息。

还有第三组:类似Rails的实现。它用基于ActiveRecord的ORM集合来替换模型层,假设视图是模板,“控制器”是演示者和视图职责的组合。

+0

在阅读标题后,我来到这里期待最糟糕的答案;我很惊喜:} – orourkek 2012-08-10 16:19:00