В режиме разработчика, почему мне по-прежнему нужно вручную удалять каталог «generate / code / {vendor}» при добавлении внедрения зависимостей в контроллер? - PullRequest
0 голосов
/ 29 ноября 2018

Я создаю бэкэнд-контроллер.Каждый раз, когда я добавляю инъекцию зависимостей в конструктор, мне нужно выполнить rm -r generated/code/{vendor}.Почему это?

1 Ответ

0 голосов
/ 15 мая 2019

Документация Magento 2 объясняет, почему:

Предположим, что класс Factory или Proxy для класса Customer сгенерирован, а к классу Customer добавлены новые методы.Поскольку в файловой системе существует Factory или Proxy, он не регенерируется.

Однако реализация Factory или Proxy теперь не завершена, поскольку у нее нет новых методов.В этом случае вы должны восстановить класс Factory или Proxy.

В вашем случае код уже был сгенерирован до введения нового класса.Внедрение нового класса в __construct () в вашем коде вызовет несоответствие __construct () в сгенерированном коде, что приведет к ошибке.

Удаление сгенерированного кода заставит Magento перестроить код вместе с вновь добавленным классом в __construct ().

https://devdocs.magento.com/guides/v2.3/extension-dev-guide/code-generation.html#codegen-over-why

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...