
<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>在 Magento 2 中,依赖注入是实现对象之间解耦的关键,也是创建可测试和可扩展代码的基础。下面是一些 Magento 2 中依赖注入的配置和代码示例:</p><p><br/></p><p>在 di.xml 文件中配置依赖注入:</p><p>在 Magento 2 中,依赖注入的配置存储在 di.xml 文件中,这个文件通常位于你的模块的 etc 文件夹中。以下是一个简单的示例,演示了如何将 MyModule\Model\MyModel 类注入到 MyModule\Controller\Index\Index 控制器中:</p><p><br/></p><pre class="brush:as3;toolbar:false"><!-- File: MyModule/etc/di.xml --> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <type name="MyModule\Controller\Index\Index"> <arguments> <argument name="myModel" xsi:type="object">MyModule\Model\MyModel</argument> </arguments> </type> </config></pre><p>在构造函数中注入依赖项:</p><p>在 Magento 2 中,依赖项通常通过构造函数注入到类中。以下是一个简单的示例,演示了如何将 MyModule\Model\MyModel 类注入到 MyModule\Controller\Index\Index 控制器中:</p><p><br/></p><pre class="brush:as3;toolbar:false">namespace MyModule\Controller\Index; use MyModule\Model\MyModel; class Index extends \Magento\Framework\App\Action\Action { protected $myModel; public function __construct( MyModel $myModel, \Magento\Framework\App\Action\Context $context ) { $this->myModel = $myModel; parent::__construct($context); } public function execute() { // Use $this->myModel in your controller logic } }</pre><p>使用工厂类创建对象:</p><p>在 Magento 2 中,如果您需要在某个类中使用另一个类的多个实例,则可以使用工厂类创建对象。以下是一个简单的示例,演示了如何在 MyModule\Controller\Index\Index 控制器中使用工厂类创建 MyModule\Model\MyModel 的多个实例:</p><p><br/></p><pre class="brush:as3;toolbar:false">namespace MyModule\Controller\Index; use MyModule\Model\MyModelFactory; class Index extends \Magento\Framework\App\Action\Action { protected $myModelFactory; public function __construct( MyModelFactory $myModelFactory, \Magento\Framework\App\Action\Context $context ) { $this->myModelFactory = $myModelFactory; parent::__construct($context); } public function execute() { $myModel1 = $this->myModelFactory->create(); $myModel2 = $this->myModelFactory->create(); // Use $myModel1 and $myModel2 in your controller logic } }</pre><p>这些是一些 Magento 2 中使用依赖注入的常见示例和配置。通过使用依赖注入,您可以创建可扩展、可测试和松散耦合的代码</p><p><br/></p>