Как переименовать пакет в 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". 

Эти две службы относятся к набору с новым именем. Это приводит меня к выводу, что я что-то пропустил в процессе переименования.

Есть идеи?

Я только что закончил переименование самого пакета и оказался в том же месте, что и пару минут назад. К этому моменту я использовал функцию замены редакторов. Оказывается, есть некоторые файлы, которые нуждаются в дополнительной заботе, которые находятся здесь (при условии, что ваше старое имя Bundle было AcmeOldBundle, новым будет AcmeNewBundle):

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

Не забудьте также обновить имена классов внутри файлов.

Текущие ответы действительно объясняют, что делать, чтобы переименовать пакет, но они не учитывают некоторые вещи:

  1. Переименуйте /app/AppKernel.php в /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/ и замените его новым именем пакета.

Вам необходимо обновить все пространство имен в каждом файле.

Вы использовали namespace Cynergy\ComponentBundle\Something; но теперь вы используете namespace XXXCynergy\ComponentBundle\Something;

Не забудьте обновить свои services.(xml|yml) .