magento2依赖注入--通过参数的方式实现magento2的依赖注入详解

Magento2开发教程 - Magento 2 的部署配置 部署配置的目的 Magento 2的部署配置由你的模块的安装及环境配置: /app/etc/config.php, 其中包含已安装的模块、主题和语言包的列表 /app/etc/env.php, 其中包含环境设置,如: 数据库连接设置缓存存储设置启用的缓存类型您的加密密钥网络路由参数(基URL,Magento管理URI)文件系统路径 config.php 和 env.php 被 阅读详情

magento2的依赖注入使用了xml文件进行配置,很多学习magento2的小伙伴对于xml文件比较陌生,而且对于依赖注入的原理不是很清楚,而依赖注入在现代软件开发中是非常重要的。

本文件为大家讲解magento2中依赖注入比较重要的一个知识点,通过参数的方式实现magento2的依赖注入。

magento2中的依赖注入主要依靠于di.xml文件中的reference和type来定义。

通过在整个<MAGENTO_DIR>目录的di.xml文件中查找<preference字符串,我们可以看到MAGENTO在其大部分模块中使用了数百个首选项定义。

让我们快速了解一下类型为Magento\Eav\Model\Attribute\Data\AbstractData的__construct方法之一:

public function __construct(\Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate, \Psr\Log\LoggerInterface $logger, \Magento\Framework\Locale\ResolverInterface $localeResolver)
    {
        $this->_localeDate = $localeDate;
        $this->_logger = $logger;
        $this->_localeResolver = $localeResolver;
    }

我们可以在<MAGENTO_DIR>/magento2-base/app/etc/di.xml文件中找到这些接口的首选项定义:

class Type {
    protected $objectManager;
    public
    function __construct(\Magento\ Framework\ ObjectManagerInterface $objectManager) {
        $this - > objectManager = $objectManager;
    }
    public function example() {
        $this - > objectManager - > create(\Fully\ Qualified\ Class\ Name::class);
        $this - > objectManager - > get(\Fully\ Qualified\ Class\ Name::class);\
        Magento\ Framework\ App\ ObjectManager::getInstance() - > create(\Fully\ Qualified\ Class\ Name::class);\
        Magento\ Framework\ App\ ObjectManager::getInstance() - > get(\Fully\ Qualified\ Class\ Name::class);
    }
}

强烈反对直接使用objectManager,因为它可以防止工厂类提供的类型验证和类型提示。通过在整个<MAGENTO_DIR>目录的di.xml文件中查找<type字符串,我们可以看到MAGENTO在其大多数模块中使用了一千多个类型定义。

查看Magento\Customer\Model\Visitor类的源代码,我们可以看到它的构造函数是由$ignoredUserAgents=[]数组定义的。前面的示例使用type元素注入具有给定数组值的ignoredUserAgents参数。

当合并给定作用域的配置文件时,具有相同名称的数组参数将合并到一个新数组中。但是,如果以后通过更具体的作用域或通过代码加载任何新配置,则新配置中的任何数组定义都将替换加载的配置,而不是合并。

本文内容来源于码小课–magento专区:
magento-dn.png
码小课提供magento2全栈开发教程,是学习magento2的最佳选择。

Magento 2 的架构原则 - magento2开发教程 OOP体系结构与编程原理 面向对象编程(OOP)设计允许最大的灵活性和可扩展性的软件组件,允许您设计和实现高度定制的网站。OOP原则的优点包括纳入行业标准编程设计模式和严格的业务逻辑分离从演示。继承是重要的,也符合经典的面向对象的编程方法,Magento的平台提供的核心部件和基本功能,可以继承的自定义组件的一个特定的网站或应用程序。 强大的分层产品结构 这支持从业务逻辑分离视觉呈现。这种划分 阅读详情

相关推荐

Magento 2早期官方源码探究

Magento 2提供了一个模块化的电子商务解决方案,它允许开发者轻松地添加新功能和定制现有功能。Magento 2的架构设计注重性能、安全性和可扩展性,为大规模商业运营提供了支持。自定义模块的开发是 Magento 2 中扩展和定制功能的常规方法。模块可以增加新的功能、修改现有的行为,或者对现有功能进行优化。在选择第三方扩展时,需要评估扩展的功能、文档质量、用户评价、开发者支持以及与Magento版本的兼容性。评估表示例:扩展名功能描述用户评分开发者支持兼容性。

weixin_30021053的博客 685

magento2 javascript组件开发

创建jQuery UI Widget requirejs-config.js var config = { map: { '*': { 'widgetDemo': 'Vendor_Module/js/widgetDemo' } } }; // <div dat...

weixin_34370347的博客 294

基于PCA的故障诊断方法(matlab)

1. PCA原理分析 PCA的原理主要是将原始数据进行降维。其具体工作原理参照:CodingLabs - PCA的数学原理 2. 数据预处理 训练数据集(只有正样本)为维数据,即有n个采样值,每个采样值有m个特征。 2.1 数据归一化 将数据X针对每个特征归一化为均值为0,均方根为1的数据。 其中: 3. PCA降维 3.1 首先求取协方差矩阵 协方差矩阵的公式为: 计算出来的协方差矩阵为特征m*m维矩阵。 3.2 求取特征值和特征向量 求取协方差矩阵R的特征值.

tangxianyu的博客 1万+

【magento2编码规范专题3】HTML样式指南

HTML样式指南 这种风格指南定义为团队开发Magento少和CSS代码的HTML代码风格的内在要求。我们建议开发者Magento的扩展和定制也使用这些标准。 缩进 只使用空格缩进: Tab: 4 空格 缩进大小: 4 空格 延续缩进: 4 空格 推荐 &lt;ul&gt; &lt;li&gt;One&lt;/li&gt; &lt;li&gt;Two&lt;/li&...

深漂小码哥 545

python:numpy分享(保姆级教程)

创建数组:array和ndarray、rand()、randn()、arange()、randint()、uniform()astype()基础函数:ceil()、floor()、rint()、argmax()、argmin()、cumsum()、cumprod()numpy 是数据分析必不可少的第三方库,具有高性能的特点,多用于做数组分析。内置函数:ceil()、floor()、rint()主要用于数组计算,支持多维数组。array和ndarray。比较函数:all、any。去重函数:unique。

sulin123123的博客 1729

一文学会Inner-MPDIoU:YOLOv11边界框回归优化全解析

Inner-MPDIoU 凭借“辅助边框+最小点距离”的双重创新,成功解决了传统 IoU 损失在小目标、遮挡场景、位置偏差场景下的收敛和判别难题,为 YOLOv11 注入了更强的边框回归能力。从原理剖析到代码集成,本教程已为你铺就了一条“定位精度跃升”的实战路径。现在,不妨亲自上手尝试,让你的目标检测模型在各类数据集上都能交出一份“定位精准”的答卷——相信我,当你看到检测框完美贴合目标的那一刻,你会明白这份尝试的价值。我很乐意在你实践过程中帮你解决任何问题,让我们一起推动目标检测在边框回归领域的边界。

know_F0727的博客 141

magento基础xml配置详解

1、创建模块 需要声明模块的名称和版本信息,并进行激活 需要配置两个配置文件: a、模块配置文件config.xml b、激活配置文件 <package_name>_<module_name>.xml 如果包里面有多个模块,可以将多个模块激活配置文件放置在一个xml文件中,取名:<package_name>_All.xml示例: 创建一个包名:Aosom,创建一个模块名:Testhell

wdx821228的博客 731

SAP 系统间信任关系配置全攻略:从 SM59 到 SMT1 的实践与风险控制

本文介绍了在SAP系统间配置信任关系的详细流程与最佳实践。文章以SAP Gateway与后端系统架构为场景,从SM59创建RFC目的地开始,到SMT1建立信任关系,再到授权对象S_RFCACL的配置,提供了完整的操作指南。重点包括:使用标准命名规范创建专用RFC连接、通过向导完成系统间信任登记、严格控制S_RFCACL授权范围等。文中还分享了真实项目案例、可复用的检查清单以及常见问题的排查思路,帮助用户实现稳定可靠的跨系统无密码调用,同时确保安全性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 321

Magento2 di.xml 指定或重写Proxy

Magento2 di.xml 指定或重写Proxy

kking666的博客 126

撸毛笔记-电信营业厅 v5.03

电信营业厅 v5.03签到和完成部分金豆任务, 喂宠物7天,15天,28天连签抽奖, 宠物等级权益兑换自己设置电信的服务密码, 把 手机号#服务密码 填到变量里:每天运行一两次const $ = new Env("电信营业厅");

xiaoshun007的专栏 4494

如何对正射影像DOM(卫星影像、无人机航拍影像)进行拼接、合并以及去黑边(附 Global Mapper Pro 24.0 安装包(中文注册版))

为什么要对正射影像DOM进行拼接?影像去黑边、影像拼接的操作和步骤。

从地图看世界的专栏 4298

magento2的工厂类(DI)

在 Magento 2 中,Factory 类是一个用于创建模型实例的特殊类。它是设计模式中的一种工厂模式的实现,用于将对象的创建过程与其使用者分离开来。实际上相当于Java中的@Autowired注解,magento2中用Factory类去管理Bean的实例化。之后你就可以在当前类使用yourModel类中的public方法了。:(一般在当前类构造函数中注入)

litlehuang的博客 158

5.7 BGP属-ORIGIN

注意:当去往同一个目的地存在多条不同Origin属性的路由时,在其他条件都相同的情况下,BGP将按如Origin的下顺序优选路由:IGP > EGP > Incomplete。通过以上输出可以看到路由表选择了R3发过来的路由,因为R1的路由的起源为?通过以上输出我们可以看到针对于1.1.1.1这条路由有两条,从R1和R3传过来的起源都属于IGP。(4)把从R1传过来的路由的起源改为incomplete。通过以上输出可以看到,从R1传过来的路由是最优的。(2)在R2上查看1.1.1.1的路由详细信息。

lwljh134的博客 308

什么是magento2中的virtual type,magento2虚拟类型的使用方法详解

这里,我们定义了两个虚拟类型,每个类型都更改了Magento\LayeredNavigation\Block\Navigation类的filterList参数。在这种情况下,它是通过类型定义使用的,其中存储参数完全被虚拟类型取代。magento2中的虚拟类型是Magento的一个非常巧妙的功能,它允许我们更改特定可注入依赖项的参数,从而更改特定类类型的行为。这实际上是告诉Magento,对于类别视图页面和搜索页面,使用类的虚拟类型,从而指示它完成虚拟类型中指定的所有参数更改。

github_31369641的博客 244

【论文复现】——基于改进FPFH特征提取的点云模板匹配方法

基于改进FPFH特征提取的点云模板匹配方法 [J]. 应用激光, 2024, 44 (04): 196-204.

点云侠的博客 611

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Magento2.3.5学习重写核心类

在magento2.3.5版本中学习三种重写核心的的方法,(插件,依赖注入,事件观察者)以及三者的优缺点,各自的使用场景

weixin_43169845的博客 1167

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

magento教程---依赖注入

视频地址:https://www.youtube.com/watch?v=TBZUCKb8Gyo&list=PL9Q0S-CmtAhJVjwnK5ip6H84sCuRQcACY&index=22 单例模式。是指在一次请求中。一个对象只会被实例一次。实例好的对象,会放在内存中,如果再次使用。就不会再去实例了。 而不是你刷新页面。刷新页面是第二次请求了。肯定需要重新实例化。不会从之前的内存中获取了。之前内存中数据。在你请求结束后。就从内存中全部清空了。 magento中的依赖注入,默认情.

markdown 870

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

magento2里面用到的概念

magento2是个开源PHP电商系统,同类的系统一般需要有HTML、CSS、Javascript、PHP/Psr4/MVC、Mysql等基础,而使用magento2,也许需要先认识更多概念。

wustzdd的博客 810

Magento架构深度剖析:gh_mirrors/devdo/devdocs揭示的模块化设计与依赖注入

Magento作为领先的开源电商平台,其架构设计融合了现代软件工程的最佳实践。本文将深入解析gh_mirrors/devdo/devdocs项目中展现的Magento模块化架构与依赖注入机制,帮助开发者理解其灵活可扩展的核心设计理念。 ## 一、Magento四层架构:从用户交互到数据持久化 Magento采用清晰的分层架构设计,将系统功能划分为四个主要层次,每层专注于特定职责,确保代码的高内

gitblog_00173的博客 862

ElasticSuite开发者指南:如何扩展和自定义这个Magento 2搜索引擎套件

ElasticSuite是Smile开发的Magento 2搜索引擎套件,基于ElasticSearch构建,提供强大的商品搜索和 merchandising 功能。本指南将帮助开发者了解如何扩展和自定义ElasticSuite,以满足特定业务需求。 ## 了解ElasticSuite的核心架构 ElasticSuite采用模块化设计,主要包含以下核心模块: - **module-elast

gitblog_00047的博客 832

magento2 所需要php 扩展,magento2开发,你可能需要补充的知识点

magento2是个开源PHP电商系统,同类的系统一般需要有HTML、CSS、Javascript、PHP/Psr4/MVC、Mysql等基础,而使用magento2,也许需要先认识更多概念。Dependency Injection 依赖注入,简称DI老PHPer也会对这个很陌生,这是来自Java并且发扬光大的概念,它在magento2占有最重要的地位。它能很好处理OOP结构的依赖耦合问题。有了它...

weixin_33365244的博客 395

Magento2 开发者指南(二)

在本章中,我们探讨了对象管理器和依赖注入,它们是 Magento 对象管理的基础。我们学习了依赖注入中type和preference元素的含义以及如何使用它们来操作类构造参数。尽管关于 Magento 中的依赖注入还有很多可以说的,但所提供的信息应该足够,并帮助我们了解 Magento 的其他方面。在下一章中,我们将通过插件的概念扩展我们的旅程到di.xml。在本章中,我们探讨了 Magento 中的一个强大功能——插件。我们创建了一个包含三个插件的模块;每个插件都有不同的排序顺序。

龙哥盟 1144

Magento 2开源电商平台全面解析:从入门到精通

Magento 2作为业界领先的开源电商平台,承载着全球众多知名品牌的电商业务。本文将从平台架构、核心特性、系统安装、环境配置到功能模块和扩展机制进行全面深入的解析,帮助开发者从入门到精通掌握Magento 2的开发和使用。文章详细介绍了Magento 2的模块化架构设计、依赖注入机制、插件系统、事件观察者模式等核心技术,以及安装部署的最佳实践和性能优化策略。 ## Magento 2平台概述...

gitblog_00038的博客 617

Magento2 开发者指南(一)

构建基于 Magento 的商店可能是一项具有挑战性的任务。它需要一系列与 PHP/JavaScript 编程语言、开发和生产环境以及众多 Magento 特定功能相关的技术技能。本书将提供关于 Magento 构建块所需的知识。到这本书的结尾,你应该熟悉配置文件、依赖注入、模型、集合、块、控制器、事件、观察者、插件、定时任务、配送方式、支付方式以及一些其他内容。所有这些都应该为你后续的开发旅程打下坚实的基础。在本章中,我们快速浏览了在 Magento 中使用的技术栈。

龙哥盟 1106

magento2中的Proxy代理模式详解

正确执行此操作的方法是使用原始Magento\Customer\Model\Url类型指定__construct,Magento\Customer\Module\Url\Proxy都会被传递。Proxy类的组成显示了它包装原始Magento\Customer\Model\Url类型的机制。编译后,可以在生成的/code/Magento/Customer/Model/Url/Proxy.php。文件下轻松找到Magento\Customer\Model\Url\Proxy.php类型。

github_31369641的博客 148

Magento 2 virtual type

https://magento.stackexchange.com/questions/33103/what-is-the-difference-between-type-and-virtualtype 1. 是什么 2. 适用场景 1. 是什么 \Class1 -》 public function __construct(\Class2 $argOfClass1){...} ...

davissuperman的专栏 476
上一篇: 什么是magento2中的virtual type,magento2虚拟类型的使用方法详解
下一篇: magento2中的设计模式-Proxy代理模式详解
magento全栈开发
博客等级 码龄11年 195粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值