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)
这两个服务确实属于具有新名称的包.这使我得出结论,我在重命名过程中遗漏了一些东西.
有任何想法吗?
我刚刚完成了一个包的重命名,结果与你几分钟前完全相同.到目前为止,我已经使用了我的编辑器replace-function.事实证明,有一些文件需要一些额外的照顾,这些文件位于这里(假设您的旧Bundle名称是AcmeOldBundle,new将是AcmeNewBundle):
不要忘记更新文件中的类名.
目前的答案确实解释了如何重命名一个包但他们遗漏了一些东西:
重命名捆绑包 /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)重命名文件和文件夹
您需要重命名包含代码的文件和文件夹:
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)命名空间
这可能会忘记一些文件并在每个匹配的搜索中搜索.最好的办法是做一个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)
请务必检查捆绑包中的所有命名空间,类名和配置文件.
全局配置文件
搜索旧包名称中的任何匹配项,app/config/并将其替换为新的包名称.
您需要更新每个文件中的整个命名空间。
您曾经使用过namespace Cynergy\ComponentBundle\Something;,但现在正在使用namespace XXXCynergy\ComponentBundle\Something;
不要忘记更新您的services.(xml|yml).