系统学习magento二次开发,推荐小册:《Magento中文全栈二次开发 》
本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。
在 Magento 2 中,依赖注入是实现对象之间解耦的关键,也是创建可测试和可扩展代码的基础。下面是一些 Magento 2 中依赖注入的配置和代码示例:
在 di.xml 文件中配置依赖注入:
在 Magento 2 中,依赖注入的配置存储在 di.xml 文件中,这个文件通常位于你的模块的 etc 文件夹中。以下是一个简单的示例,演示了如何将 MyModule\Model\MyModel 类注入到 MyModule\Controller\Index\Index 控制器中:
<!-- 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>
在构造函数中注入依赖项:
在 Magento 2 中,依赖项通常通过构造函数注入到类中。以下是一个简单的示例,演示了如何将 MyModule\Model\MyModel 类注入到 MyModule\Controller\Index\Index 控制器中:
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 } }
使用工厂类创建对象:
在 Magento 2 中,如果您需要在某个类中使用另一个类的多个实例,则可以使用工厂类创建对象。以下是一个简单的示例,演示了如何在 MyModule\Controller\Index\Index 控制器中使用工厂类创建 MyModule\Model\MyModel 的多个实例:
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 } }
这些是一些 Magento 2 中使用依赖注入的常见示例和配置。通过使用依赖注入,您可以创建可扩展、可测试和松散耦合的代码