Где определен класс EavSetupFactory?


Я искал пример кода о создании пользовательских атрибутов для продуктов. Я видел класс/интерфейс в коде (Magento\Eav\Setup\eavsetupfactory). Но я не смог найти, где это определено.

Вы можете видеть, что многие плагины уже используют этот класс/интерфейс, но я мог бы найти, где он на самом деле определен.

Где определен этот класс?

 2
Author: Teja Bhagavan Kollepara, 2017-06-28

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.

 8
Author: Paul, 2020-01-17 04:29:55