在开发者模式下,为什么在向控制器添加依赖注入时,仍然需要手动删除目录"generated/code/{vendor}"?



我正在构建一个后端控制器。每次在构造函数中添加依赖项注入时,我都必须执行rm -r generated/code/{vendor}。为什么会这样?

Magento 2文档解释了原因:

假设生成了Customer类的Factory或Proxy类,并且Customer类中添加了新方法。因为文件中存在Factory或Proxy系统,它不会再生。

但是,Factory或Proxy实现现在不完整,因为它没有新的方法。在这种情况下,必须重新生成Factory或Proxy类。

在您的案例中,代码是在注入新类之前生成的。在代码的__construct((中注入一个新类会导致生成的代码中__constructure((不匹配,从而导致错误。

删除生成的代码将导致Magento重新构造代码,以及__construct((中新添加的类。

https://devdocs.magento.com/guides/v2.3/extension-dev-guide/code-generation.html#codegen-为什么

希望这能有所帮助!

最新更新