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

时间:2017-11-20 17:24:38

标签: php symfony components override symfony-2.7

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

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

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

我想在像以下文件中这样做:

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

我发现的所有文档都依赖于Bundle的一部分。 那么,甚至可以这样做吗? 如果是,怎么做?

祝你好运!

PS: 在回复之前,请考虑我是Symfony的总菜鸟:) 另外,您可能已经注意到我自己的应用程序中有一个Symfony应用程序,这是正常的,不要担心:D

1 个答案:

答案 0 :(得分:0)

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

你可以在autoload-> psr-4键下添加你的composer.json。

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

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

将新包添加到composer时会出现一些问题,因此请确保运行 composer dump-autoload 以重新创建自动加载顺序。

我真的不喜欢这种方法,但它确实省了几次来修复捆绑包中的文件而没有实际分支捆绑,如果没有别的帮助,这可以作为最后的手段使用。

更多关于composer autoload的信息

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

希望这有帮助,

Alexandru Cosoi