Мой пакет находится в 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):
Не забудьте также обновить имена классов внутри файлов.
Текущие ответы действительно объясняют, что делать, чтобы переименовать пакет, но они не учитывают некоторые вещи:
Переименуйте /app/AppKernel.php
в /app/AppKernel.php
Из:
$bundles = [ // ... new Acme\OldBundle\AcmeOldBundle(), ];
Для того, чтобы:
$bundles = [ // ... new Acme\NewBundle\AcmeNewBundle(), ];
Переименование файлов и папок
Вам необходимо переименовать файлы и папки, содержащие ваш код:
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
Пространства имен
Это, вероятно, пойдет с забыванием нескольких файлов и поисками вокруг вашего пакета для каждого матча. Лучше всего сделать это: find-replace:
# find -> replace acme_old -> acme_new Acme\OldBundle\ -> Acme\NewBundle AcmeOld -> AcmeNew Acme:Old -> Acme:New Acme:OldBundle -> Acme:NewBundle
Обязательно проверьте все пространства имен, имена классов и файлы конфигурации в своем комплекте.
Глобальные файлы конфигурации
Найдите любое вхождение вашего старого имени пакета в app/config/
и замените его новым именем пакета.
Вам необходимо обновить все пространство имен в каждом файле.
Вы использовали namespace Cynergy\ComponentBundle\Something;
но теперь вы используете namespace XXXCynergy\ComponentBundle\Something;
Не забудьте обновить свои services.(xml|yml)
.