繁体   English   中英

Symfony-如何覆盖不在捆绑包中的供应商组件

[英]Symfony - How to override a vendor component which is not in a bundle

我正在搜索覆盖供应商目录中的文件,但不是捆绑包。 我正在使用Symfony 2.7

更具体地说,我正在尝试覆盖此文件中的方法:

vendor/akeneo/pim-community-dev/src/Pim/Component/Catalog/Updater/ProductUpdater.php

我想在一个文件中执行以下操作:

src/MyApp/Component/Catalog/Updater/ProductUpdater.php

我找到的所有文档都依赖于捆绑软件的一部分。 那么,有可能做到这一点吗? 如果是,该怎么办?

最好的祝福 !

PS:在回复之前,请考虑我对Symfony完全不感兴趣:)另外,您可能已经注意到我自己的应用程序中有一个Symfony应用程序,通常不用担心:D

有一种使用composer覆盖文件的方法。

您可以在autoload-> psr-4键下的composer.json文件中添加如下内容。

"autoload": {
        "psr-4": {
            "Pim\\Component\\Catalog\\Updater\\": "MyApp/Pim/Component/Catalog/Updater"
        },

第一部分是要覆盖的文件的名称空间,第二部分是新路径。

当您将新软件包添加到composer时,这可能会产生一些问题,因此请确保您运行composer dump-autoload来重新创建自动加载顺序。

我不太喜欢这种方法,但是它确实节省了我修复捆绑包中文件的时间,而没有实际分叉捆绑包,如果没有其他帮助,这可以作为我的最后选择。

有关作曲家自动加载的更多信息,请点击此处

https://getcomposer.org/doc/01-basic-usage.md#autoloading

希望这可以帮助,

亚历山德鲁·科索伊

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM