Magento的ORM系统运用了魔术方法,更确切地说是PHP强大的getter和setter功能,__call()方法。Magento的这些方法用于set, unset, 检查或获取数据。当我们调用了一个在相应类中不存在的方法时,PHP会在父类中查找是否存在该方法的声明。如果在父类中也查找不到函数,最终会使用__call()方法进行查找,Magento(或……继续阅读 » Alan 10年前 (2014-07-10) 6799浏览 0个赞
集合(collection)和模型(model)对于Magento的开发来说就像是一日三餐一样不可或缺。接下来我们会讲解Magento的ORM系统(Object Relational Mapping-对象关系映射),并学习如何正确地使用数据集合以及EAV系统。Magento像大多的当代系统一样使用了对象关系映射(ORM)。对象关系映射(Object-rel……继续阅读 » Alan 11年前 (2014-07-09) 6182浏览 0评论0个赞
Magento中的事件(event)和观察者模式(observer pattern)相当的有意思,它使得开发者在应用流中对Magento的重要部分进行扩展。为了提供高灵活性以及促进不同模块之间的交互,Magento添加了事件/观察者模式,这一模式可以让模块之间产生松散耦合。这一系统分为两部分,处理对象和事件信息的事件以及监听特定事件的观察者。事件处理……继续阅读 » Alan 11年前 (2014-07-04) 5279浏览 0评论0个赞
Magento通过工厂方法(factory method)来实例化Model, Helper和Block类。一个工厂方法就是一种设计模式,用于通过一个类的别名来实例化一个对象,而无需使用具体的类别。Magento采用了如下几个工厂方法:Mage::getModel()Mage::getResourceModel()Mage::helper()Ma……继续阅读 » Alan 11年前 (2014-07-03) 4320浏览 0评论0个赞
Magento的一个重要特征是可以通过单次安装来实现多站点(Website)和多商店(Store),Magento内部称之为作用域(Scope)。产品、分类、属性和配置等元素的值会根据作用域的不同而不同,这就使得Magento具备极强的灵活性。例如,一个产品可以在两个不同的站点中采用完全不同的价格,同时使用相同的属性配置。对于开发者而言,最常用到作用……继续阅读 » Alan 11年前 (2014-07-03) 4052浏览 0评论0个赞
模型-ModelsMagento采用对象关系映射(Object Relational Mapping,简称ORM)方法,尽管还可以使用Zend_Db来直接连接数据库,但大多数的时候我们将使用模型来获取数据。要实现这一任务,Magento提供了如下两种模型:简易模型(Simple models):这种模型通过简单的一个对象对应一张表的映射方法,也就是说对……继续阅读 » Alan 11年前 (2014-06-26) 6311浏览 0评论0个赞
在前面参照Allan MacGregor的Magento PHP Developer’s Guide一书尝试搭建Linux环境并安装Magento(参见Magento的安装和Magento的环境搭建),中间存在一些问题,实际上未能100%完成。之后Alan请教了公司IT部门的技术大牛,在VirtualBox(也可使用VMware但可能需安装VMw……继续阅读 » Alan 11年前 (2014-06-25) 9566浏览 0评论0个赞
如果您熟悉传统的CakePHP或Symfony这些MVC模型框架的话,可能会了解到通用的MVC称为基于惯例(convention-based)的MVC。在这种MVC框架下,添加现代战争模型或控制器等只需按框架标准创建文件(类),系统可以自动识别。而Magento使用的则是基于配置(configuration-based)的MVC,对于这种情况,除了创建文件(……继续阅读 » Alan 11年前 (2014-06-25) 4589浏览 0评论0个赞
在深入了解Magento的各组件之前,我们应当了解这里组件之间是如何交互的以及Magento是如何处理来自Web服务器的请求的。和其它PHP应用程序一样,Magento使用index.php作为入口文件,用于处理Mage.php引导类以及开启请求环节,主要有如下几步:Web服务器接到请求,magento通过调用引导文件Mage.php被实例化初始化和实……继续阅读 » Alan 11年前 (2014-06-23) 6064浏览 0评论0个赞
上一节我们学习了Magento的基本结构,这一节让我们来看看模块结构(Modular Architecture)和代码池(Code Pools)的相关知识。Magento是由一个个小的模块组成,通过这些模块来添加具体的功能。这么做的好处是可以轻松的启用和取消某一个模块,一个新的功能也可以通过添加模块来实现。AutoloaderMagento是一个由3万……继续阅读 » Alan 11年前 (2014-06-22) 5019浏览 0评论0个赞