Magento 2工厂对象

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

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

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

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

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

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;
	}
}

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

相关文章

0 0 投票数
文章评分
订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论