11

我的捆绑包位于,捆绑包src/Cinergy/Bundle/ComponentBundle/CinergyComponentBundle.php的逻辑名称是'CinergyComponentBundle'.

由于我没有遵守公司的命名约定,我必须更改捆绑包的逻辑名称。假设我必须将其重命名为'XXXCinergyComponentBundle'

我需要更改哪些文件?

我尝试将CinergyComponentBundle.php文件和包含类重命名为XXXCinergyComponentBundle.php. 我还更改了 AppKernel 中的引用。

不幸的是,这不起作用。当我尝试清除缓存时,我收到以下错误消息:

[Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException]                                   
The service "cinergy.people.direct.php" has a dependency on a non-existent service "cinergy.work.registry". 

这两个服务确实属于具有新名称的捆绑包。这使我得出结论,我在重命名过程中遗漏了一些东西。

有任何想法吗?

4

3 回答 3

9

我自己刚刚完成了对捆绑包的重命名,结果与您几分钟前所做的完全相同。到目前为止,我已经使用了我的编辑器替换功能。事实证明,有些文件需要格外小心,它们位于此处(假设您的旧 Bundle 名称是 AcmeOldBundle,新名称将是 AcmeNewBundle):

  1. Acme\OldBundle\OldBundle.php -> NewBundle.php
  2. Acme\OldBundle\DependencyInjection\AcmeOldExtension.php -> AcmeNewExtension.php

不要忘记更新文件中的类名。

于 2012-12-17T09:05:43.410 回答
7

当前的答案确实解释了如何重命名捆绑包,但它们遗漏了一些事情:

  1. 重命名捆绑包/app/AppKernel.php

    从:

    $bundles = [
        // ...
        new Acme\OldBundle\AcmeOldBundle(),
    ];
    

    至:

    $bundles = [
        // ...
        new Acme\NewBundle\AcmeNewBundle(),
    ];
    
  2. 重命名文件和文件夹

    您需要重命名包含您的代码的文件和文件夹:

    src/Acme/OldBundle -> src/Acme/NewBundle
    src/Acme/OldBundle/OldBundle.php -> src/Acme/NewBundle/NewBundle.php
    
    # If present
    src/Acme/OldBundle/DependencyInjection/AcmeOldExtension.php -> src/Acme/NewBundle/DependencyInjection/AcmeNewExtension.php
    
  3. 命名空间

    这可能会忘记一些文件并在您的包中搜索每个匹配项。最好的办法是做一个查找替换:

    # find -> replace
    acme_old -> acme_new
    Acme\OldBundle\ -> Acme\NewBundle
    AcmeOld -> AcmeNew
    Acme:Old -> Acme:New
    Acme:OldBundle -> Acme:NewBundle
    

    请务必检查包中的所有名称空间、类名和配置文件。

  4. 全局配置文件

    在其中搜索任何出现的旧捆绑包名称app/config/并将其替换为新捆绑包名称。

于 2016-12-30T10:31:56.173 回答
3

您需要更新每个文件中的整个命名空间。

您正在使用namespace Cynergy\ComponentBundle\Something;,但您现在正在使用namespace XXXCynergy\ComponentBundle\Something;

不要忘记更新您的services.(xml|yml).

于 2012-09-21T08:58:43.030 回答