Magento学习手记(第三天)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);

 

以上是关于Magento学习手记(第三天)的主要内容,如果未能解决你的问题,请参考以下文章

Magento学习手记(第十四天)

Magento学习手记(第八天)

Python 学习第三天--GUI桌面项目

第三天-界面

2018-10-11学习python第三天

JAVA学习第三天