Magento 2:从生成拦截器中排除类


9

在Magento 2(beta9及更高版本)中,您可以运行此命令php bin/magento setup:di:compile,并且将在var/generation文件夹中为magento实例中具有的所有类生成所有拦截器,工厂和代理(也许还有其他)。
这对于实时环境很有用,因为否则,上述类将在需要时在运行时生成,并可能影响性能。
有没有办法从此脚本中排除某些类,以便在运行命令时不会创建拦截器?
例如:我希望控制器Magento\Backend\Controller\Adminhtml\Dashboard\RefreshStatistics不生成拦截器。


你为什么需要这个?
安东·克里尔

@AntonKril。停止问问题,给我一个解决方案:D。现在认真地讲,我正在尝试删除一些模块,并且这样做时setup:di:compile失败了,因为缺少某些父类。扩展那些缺少类的类仍然存在,但应用程序未使用它们。而且我无法删除它们,因为它们在我需要的模块中。请参见下面的完整说明:magento.stackexchange.com/questions/69040/...
马吕斯

Answers:


7

至少在较早版本中从cli运行时,具有exclude-pattern参数。添加它是为了避免无法正确处理一个类时发生问题,例如在magento1类中发生这种情况。通过将命令和参数转换为控制台命令,它们可能已更改。

但是我不确定您的目标是什么,所以我不能说这是否是一个好的解决方案。


这是我想做的。我正在删除一些模块,以了解我能走多远。在这些模块中是Report模块。但是由于Reports和Backend模块之间的紧密耦合,后端模块中仍然存在依赖于Report模块类的类。我找到了一种不使用它们的方法,但是由于di命令解析文件,因此它会通过“忽略的”类并尝试构建拦截器。但这失败了,因为Magento\Backend\Controller\Adminhtml\Dashboard\RefreshStatistics例如父类不存在。因此,我需要一种排除这种情况的方法。
马里斯(Marius)

它表明在控制台命令方法中没有exclude-pattern参数。或者至少我没有找到它。我看了看DiCompileCommand::configure
马里斯(Marius)

我知道,您可以添加一个问题,以请求参考此PR的此功能:github.com/magento/magento2/pull/986 或在此处使用更改集来测试如何为本地构建临时添加它。
Flyingmana 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.