Magento 2 工厂对象

在这一部分中,我们将讨论Magento 2 中模型的工厂对象正如您在 OOP 中所知道的,工厂方法将用于实例化对象。在 Magento 2 中,Magento 2 工厂对象做同样的事情。

Factory 类名是Model 类的名称并附加单词Factory因此,对于我们的示例,我们将拥有 TopicFactory 类。您不得创建此类。Magento 将为您创建它。每当 Magento 的对象管理器遇到以单词“Factory”结尾的类名时,如果该类尚不存在,它将自动在 var/generation 文件夹中生成 Factory 类。你会看到工厂类

var/generation/<vendor_name>/<module_name>/Model/ClassFactory.php

为了实例化模型对象,我们将使用自动构造函数依赖注入来注入工厂对象,然后使用工厂对象来实例化模型对象。

例如,我们将调用模型来获取Block中的数据。我们将创建一个主题块:

Mageplaza\HelloWorld\Block\Topic.php

此文件的内容:

<?php
namespace Mageplaza\HelloWorld\Block;
class Topic extends \Magento\Framework\View\Element\Template
{
	protected $_topicFactory;
	public function _construct(
		\Magento\Framework\View\Element\Template\Context $context,
		\Mageplaza\HelloWorld\Model\TopicFactory $topicFactory
	){
		$this->_topicFactory = $topicFactory;
		parent::_construct($context);
	}

	public function _prepareLayout()
	{
		$topic = $this->_topicFactory->create();
		$collection = $topic->getCollection();
		foreach($collection as $item){
			var_dump($item->getData());
		}
		exit;
	}
}

正如您在此块中看到的,TopicFactory 对象将在_construct()函数中创建。_prepareLayout()函数中,我们使用$topic = $this->_topicFactory->create();创建模型对象。


nba2k2球员数据
请先登录后发表评论
  • 最新评论
  • 总共0条评论