我对Magento MVC架构的理解

by Web全栈工程师 on 2011 年 12 月 22 日

在做二次开发以来,一直没有好好地去了解magento的MVC架构,以为跟其它的MVC架构一样,其实有着很大的区别。

有很多的程序框架都使用了现在最流行的MVC架构,对于Model-View-Controller (MVC) ,模型-视图-控制器,源于Smalltalk编程语言和Xerox Parc。现在有很多系统是基于MVC架构的例如: open cart , think PHP, codeigniter等等无不都体现了MVC的精髓,分离数据,业务逻辑和显示逻辑。最常见的 PHP MVC框架是这样的。

Magento MVC和普通MVC框架的区别在于

普通的MVC框架:

  1. 由浏览者访问URL,URL会请求被一个PHP文件拦截(这个URL就是路由),通常称为前端控制器,
  2. 它将分析这个URL,通个一个判断来获得一个执行控制器的名字(函数名)和执行方法的名字,获得执行控制器并调用其执行方法,
  3. 在执行方法中处理业务逻辑(读取通过URL和表单或是PHP文件等传来的数据)
  4. 执行控制器会把数据传递给显示逻辑,再通过显示逻辑去生成模板文件。

Magento的MVC框架:

  1. 由浏览者访问URL,URL会请求被一个PHP文件拦截(这个URL就是路由),通常称为前端控制器,
  2. 它将分析这个URL,通个一个判断来获得一个执行控 制器的名字(函数名)和执行方法的名字,获得执行控制器并调用其执行方法,在执行方法中处理业务逻辑,模型数据
  3. 此时它就不会按常规地走了,控制器会实例化布局对象,在Magento中那个布局是Layout(这个很重要,控制着你显示什么内容),布局对象根据请求的参数,Magento系统会配置创建一个Block对象,我们称之为“块”列表,并且将它实例化。
  4. 布局对象会用output方成去生成HMTL文件,每一个块对象和一个模板文件相对应。其中显示视图View这个被划分为两个部份,一部份是块(Block)和模板(Template),块中的是对象,模板中的是混合了XHTML和PHP代码,这就分离得更清楚了。

Magento还有可以在外围在功能方面进行扩展,对Magento进行弟二次开发,在app/code/local中加入自己的模块名进行扩展,可以调用相对关的父类和其他的功能。

Comments on this entry are closed.

Previous post:

Next post: