Где определен класс EavSetupFactory?
Я искал пример кода о создании пользовательских атрибутов для продуктов. Я видел класс/интерфейс в коде (Magento\Eav\Setup\eavsetupfactory). Но я не смог найти, где это определено.
Вы можете видеть, что многие плагины уже используют этот класс/интерфейс, но я мог бы найти, где он на самом деле определен.
Где определен этот класс?
1 answers
Magento создаст любой класс с "фабрикой" на самом конце либо на лету в режиме разработчика, либо как часть процесса setup:di:compile
. У фабричного класса будет метод с именем create
, который создаст в нем новый экземпляр класса.
Обычный пример в классе настройки будет таким, как показано ниже.
use Magento\Framework\Setup\InstallDataInterface;
class Setup implements InstallDataInterface {
protected $eavSetupFactory;
public function __construct(\Magento\Eav\Setup\EavSetupFactory $eavSetupFactory)
{
$this->eavSetupFactory = $eavSetupFactory;
}
public function install(\Magento\Framework\Setup\InstallDataInterface $setup, \Magento\Framework\Setup\ModuleContextInterface $context)
{
/**
* @var \Magento\Eav\Setup\EavSetup $eavSetupModel
*/
$eavSetupModel = $this->eavSetupFactory->create(['setup' => $setup]);
}
}
Обычно это используется для загрузки модели с помощью внедрения зависимостей. Вместо запроса Magento\Eav\Setup\EavSetup
вы запрашиваете Magento\Eav\Setup\EavSetupFactory
, а затем вызываете метод create, чтобы получить вы объект Magento\Eav\Setup\EavSetup
.