Dee*_*pak 2 php model-view-controller codeigniter codeigniter-2
在过去的两年里,我是一名平板php程序员.现在我想转向MVC
架构,所以我使用codeigniter
它看起来非常简单.我想了解一些最佳实践,因为我正在开发中codeigniter
.
我有一个controller
叫building
,一个model
被叫building_data
和一个叫做的视图building_view
.现在我想通过检查很多条件来显示建筑物清单.我正在使用平面PHP进行以下操作
section - A
,section -B
和section-c
作为HTML
输出.现在,MVC
我正在做以下事情
building_data
(型号)building_data
的$data
数组中building
building_view
并输出HTML
(我可以在视图中进行基于条件的数据分类(不使用mysql查询)吗?!My actual question
)我是否在不违反MVC架构规则的情况下做正确的事情?
MVC是一种设计模式.不是建筑.
但是,如果您希望学习最佳实践或MVC,那么CodeIgniter是错误的选择.它充满了糟糕和过时的做法(PHP4代码片段,全局状态和许多其他问题),并没有实现任何接近MVC模式的东西.它更像是PHP的糟糕Rails克隆.
视图应该是对象,而不是愚蠢的模板.您的控制器应告诉模型层用户选择的构建,然后查看获取有关当前构建的详细信息并决定如何表示所有构建.
在适当的MVC实现中,视图是包含表示逻辑的实例.他们从模型层获取信息,然后选择用于呈现响应的模板,或者甚至是否需要HTML响应.也许用户实际上要求JSON或XML格式的数据.或者,该视图需要发送的唯一响应是HTTP标头.
此外,您应该意识到您无法在Web应用程序中实现经典的MVC模式(或者至少它非常困难并且需要使用套接字和持久模型).相反,我们使用MVC启发的模式.它们之间的主要区别在于View如何从Model层获取信息.
还有第三组:类似Rails的实现.它用基于ActiveRecord的ORM集合替换模型层,假装视图是模板,"控制器"是演示者和视图职责的组合.