ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

magento---什么时候使用virtul type?

2021-12-18 15:04:02  阅读:235  来源: 互联网

标签:sub virtual --- concrete magento type class 注入


视频地址:https://www.youtube.com/watch?v=lk3VpPz7NMY&list=PL9Q0S-CmtAhJVjwnK5ip6H84sCuRQcACY&index=29

 virtual types相当于magento为你创造的一个子类。这个子类是不独立存在的。

当然如果你自己创造一个concrete class也是可以解决virtual type的问题的。

virtualtype 在别的框架里是没有的。是magento的一个特性。

但是手动创建一个子类,然后再注入到新的类,这个在每个框架中都是可以这样写的。

所以什么时候用virtual和sub class呢?

sub class可以覆盖virtual type的所有功能,就是自己从家的concrete class肯定可以实现virtual的功能。但是virtual type只能实现一部分功能。不能实现完全扩展。

如果这个子类中还有其他的方法。那用virtual type就不一定能实现。

为何有别的方法virtual type就不能实现全部功能呢?

virtual type在哪些情况下可以用。具有哪些局限呢?

 

在2中,定义的是基础。定义好了api,model,repository,并且在dim.xml定义好了他们之间的依赖关系。2中没有viewtmodel。

在1中。是用virtual type来堆2中注入的model进行更改。用virtual type 创建了一个虚拟的repository,然后再注入到viewmodel内。 

如果不用virtual type,用concrete class

自己新建一个repository,并把扩展后的model注入近来。

然后再在dim。xml把这个自己定义的repository注入到viewmodel内。

 自己创建了实体类了。

这个和virtual type的区别在哪里?

virtual type只是依赖注入。替换掉构造函数那个类,那个类也许包含了数据。就是先沟通过构造函数替换掉传入这个类的数据。

但是如果需要再sub class内对这个数据进行一步简单的处理。后者或者再或者一些这个sub class 就是想或者一下这个repository,用virtual type是不行了的。这就需要用到的concrete class了。concrete class不仅能拥有virtual tpye的依赖注入到构造函数的功能,还能对这个sub class进行扩展和改写。

为何网上把vitual type 说成是type后那个类的虚拟sub class。现在可以理解的。的确是后面那个类的虚拟sub class。他的方法什么都有继承过来。只是在他的构造函数内注入了一个新的对象而已。相当于sub class 注入新的类,然后再传递给这个type后面的class。

就相当于这个。并且父类的所有方法都继承下来了。所以和subclass很像。

但是如果需要修改继承过来的方法,那就做不到了。需要用concrete sub class。

 

重写了父类的newWarehouse 方法。

在一个类中调用的不是本类的方法。1,要么是调动父类的方法。进行调用,或者进行改写。2,或者调用依赖注入过来对象内部的方法。

不会有其他方法出现。 

 

标签:sub,virtual,---,concrete,magento,type,class,注入
来源: https://blog.csdn.net/zwj900124/article/details/122011549

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有