Magento学习手记(第三天)

第三天:

一、Magento Model设计分析(EAV为数据库模型设计模式,此处分析的是PHP代码模型设计)

Magento的Model模型分成三种:

  • Model:Mega::getModel();
  • ResourceModel:Mega::getResourceModel();
  • ResourceModelCollection;

注:ResourceModel和ResourceModelCollection还分为一般的、基于EAV模型的两种;

 

 

 

第一步:配置xml文件,config.xml;

第二步:model对象操作;

  • 获取model对象:$model = Mega::getModel('catalog/product');
  • _contruct()方法:
1 protected function _construct()
2     {
3             $this->_init('catalog/product');
4     }

    将调用父Mage_Core_Model_Abstract中的_init方法。他的参数值是catalog/product。这个cms/page与上面的getModel方法与的catalog/product的值虽然是一样的,但是他们的意义完全不同,_init方法中的catalog/product指资源model的名称,它表示我们怎样找到这个资源model,而getModel中的catalog/product表示值model的名称,它表示我们怎样去找到这个值model,他们的/前面部份catalog必须相同,但是/后面部份不一定相同,分别表示资源model类名的一部份(后面部份)和值model类名的一部份(后面一部份),只不过在此碰上了,刚好相同。Magento有很多都是相同的,但是要理解好这两个参数代表不同的意义,并且/后面部份可以是不相同的。

 

  • _init()方法
1 protected function _init($resourceModel)
2 {
3     $this->_setResourceModel($resourceModel);
4 }

 

  • _setResourceModel方法
1     protected function _setResourceModel($resourceName,
2          $resourceCollectionName=null)
3     {
4         $this->_resourceName = $resourceName;
5         if (is_null($resourceCollectionName)) {
6             $resourceCollectionName = $resourceName.’_collection’;
7         }
8         $this->_resourceCollectionName = $resourceCollectionName;
9     }

 

    第3行把传过来的资源model的指示名给类变量_resourceName,供后继使用,如果没有第二个参数(这里是没有传的),将在_resourceName后加一个_collection作为资源Collection Model的指示名,这里_resourceName和_resourceCollectionName分别为catalog/product和catalog/product_collection.

    注意在Magento中,一般都没有传第二个参数$resourceCollectionName,从而使得我们的资源Collection Model的类名都是Collection,从这个方法您可可能看出,这个不是必须的,你可以改变资源Collection Model的标示,这个是不对的,因为我们的_init方法根本没有机会给我们传入这个参数.所以目前为上,我们的资源Collection Model类名都为Collection。

 

 

二、xdebug分析magento后台产品模块相关内容调用情况:

方法:打开一个configurable product,分析xdebug文件;

 

app/code/core/Mage/Catalog/Model/Product.php文件分析:

1. 核心内容:Catalog product model商品模型;

2. 类型:Model类

 

app/code/core/Mage/Catalog/Model/Resource/Product.php文件分析:

1. 核心内容:Product entity resource model商品实体资源模型;

2. 类型:ResourceModel类;

 

三、Magento系统中使用的十二种设计模式

  • MVC模式(MVC Pattern);
  • 前端控制器模式(Front Controller Pattern);
  • 工厂模式(Factory Pattern);
  • 单例模式(Singleton Pattern);
  • 注册表模式(Registry Pattern);
  • 原型模式(Prototype Pattern);
  • 对象池模式(Object Pool Pattern);
  • 迭代器模式(Iterator Pattern);
  • 懒加载模式(Lazy Loading Pattern);
  • 服务定位器模式(Service Locator Pattern);
  • 模块模式(Module Pattern);
  • 观察者模式(Observer Pattern);

 

转载于:https://www.cnblogs.com/pisTol/p/Magento_study_note_3.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值