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

Bet*_*ide 11 php bundle rename symfony

我的包位于,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". 
Run Code Online (Sandbox Code Playgroud)

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

有任何想法吗?

zeb*_*bba 9

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

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

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


Pet*_*ter 7

目前的答案确实解释了如何重命名一个包但他们遗漏了一些东西:

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

    从:

    $bundles = [
        // ...
        new Acme\OldBundle\AcmeOldBundle(),
    ];
    
    Run Code Online (Sandbox Code Playgroud)

    至:

    $bundles = [
        // ...
        new Acme\NewBundle\AcmeNewBundle(),
    ];
    
    Run Code Online (Sandbox Code Playgroud)
  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
    
    Run Code Online (Sandbox Code Playgroud)
  3. 命名空间

    这可能会忘记一些文件并在每个匹配的搜索中搜索.最好的办法是做一个find-replace:

    # find -> replace
    acme_old -> acme_new
    Acme\OldBundle\ -> Acme\NewBundle
    AcmeOld -> AcmeNew
    Acme:Old -> Acme:New
    Acme:OldBundle -> Acme:NewBundle
    
    Run Code Online (Sandbox Code Playgroud)

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

  4. 全局配置文件

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


Bor*_*éry 3

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

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

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

  • 那么你就错了,因为 PSR-0/1/2 你需要将你的命名空间与文件系统映射,或者手动设置自动加载器。 (3认同)