Magento是一套强大的网站系统,通过模块结构增强了其灵活性,但同时也增加了学习的复杂性,全新安装的Magento系统就有至少3万个文件和120多万行代码。刚刚接触的话可能会望而生畏,下面让我们来了解一下其基本框架和结构。
Magento的基石-Zend框架
Magento是一套建立在Zend框架基础上的一套面向对象的PHP框架,当前的Zend框架Zend Framework 2(简称ZF2)是一广为使用的开源框架,全部采用了面向对象的思想及MVC模式(Model-View-Controller进行开发。Magento的前身Varien在开发这套网站系统中因其具备了如下几个组件而决定采用Zend框架:
Zend_Cache
Zend_Acl
Zend_Locale
Zend_DB
Zend_Pdf
Zend_Currency
Zend_Date
Zend_Soap
Zend_Http
Magento总共使用了约15个Zend组件,Varien库也直接继承了前面所提到的一些Zend组件,如Varien_Cache_Core继承了Zend_Cache_Core。使用Zend框架,使得Magento具备了可维护性、可升级性以及灵活性。可访问http://framework.zend.com/了解更多有关Zend框架的知识。
Magento的目录结构
Magento的目录结构与其它使用MVC模式的应用程序略有不同,下面就让我们来看看各目录及其功能:
- App: 这是Magento的核心文件夹,其下又分为三个目录:
- code: 此目录包含我们的应用代码,分为三类代码池(code pools):core, community和local
- design: 此目录下包含应用程序所需的所有模板文件和布局文件
- locale: 此目录包含Magento商店所需的所有多语种和email模板文件
- js: 此目录下包含Magento中所需使用的所有JS库
- media: 此目录下为所有的产品,CMS页面及产品图片缓存相关的图片及媒体文件
- lib: 该目录下包含Magento中使用的所有第三方库文件如Zend和PEAR,以及存放在Varien和Mage文件夹下的Magento自主开发的库文件
- skin: 该目录包含所有的由对应主题(theme)使用的CSS代码、图片以及JavaScript文件
- var: 该目录下包含我们的临时数据,如缓存文件、索引锁定文件、session、导入/导出文件,在企业版中还有全页缓存文件夹。
Magento是一套基本模块(Module)的系统,这就意味着包含其核心文件在内的应用程序都是由一个个小的模块组成的。因而目录结构对于组织各模块就起着至关重要的作用,一个典型的的Magento模块结构如下:
各模块目录的作用说明
- Block: 该文件夹是包含了形成控制器(Controllers)和视图(Views)间额外逻辑层的块文件
- controllers: controllers由处理Web服务器请求的动作文件组成
- Controller: 该目录下的类多为抽象类,由controllers下的控制器类继承
- etc: 此文件夹下包含如config.xml和system.xml这样的XML模块配置文件
- Helper: 该文件夹下包含封装了通用模块功能的附加类,以供同一模块或其它模块的类来继承
- Model: 此目录包含支持模块中进行数据交互的模型(Model)
- sql: 该目录中包含各指定模块安装和升级所需的文件
在后面的学习中我们会看到Magento强烈依赖于工厂名(factory name)和工厂方法(factory method), 这也是为什么目录结构如此重要。
下一节我们来一起了解一下模块结构和代码池的相关知识。