如何在symfony中重命名一个包?

时间:2012-09-21 08:39:11

标签: php symfony bundle rename

我的捆绑包位于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". 

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

有什么想法吗?

3 个答案:

答案 0 :(得分:9)

我刚刚完成了一个自己重命名的捆绑包,结果与几分钟前完全相同。到目前为止,我已经使用了我的编辑器replace-function。事实证明,有一些文件需要一些额外的照顾,这些文件位于这里(假设你的旧Bundle名称是AcmeOldBundle,new将是AcmeNewBundle):

  1. Acme \ OldBundle \ OldBundle.php - > NewBundle.php
  2. Acme \ OldBundle \ DependencyInjection \ AcmeOldExtension.php - > AcmeNewExtension.php
  3. 不要忘记更新文件中的类名。

答案 1 :(得分: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:

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

    请务必检查捆绑包中的所有命名空间,类名和配置文件。

  4. 全局配置文件

    app/config/中搜索旧包名称的任何匹配项,并将其替换为新的包名称。

答案 2 :(得分:3)

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

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

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