#doctrine #symfony #bundle
#доктрина #symfony #пакет
Вопрос:
В настоящее время я работаю над проектом, использующим Symfony2, и мне не нужен пакет Doctrine. Я неоднократно пытался удалить его, но я продолжаю получать ошибки, которые прерывают установку.
Я проверил grep для всех экземпляров Doctrine в каталоге приложения и прокомментировал любую ссылку на Doctrine в следующих файлах:
- app/config/config.yml
- app/AppKernel.php
- app/autoload.php
Затем я очистил кеш (в настоящее время работает в режиме разработки, поэтому удалил каталог cache / dev).
Ошибка, которую я сейчас получаю, это:
Фатальная ошибка: класс ‘Doctrine Common Annotations FileCacheReader’ не найден в /path/to/application/app/cache/dev/appDevDebugProjectContainer.php в строке 45
Это относится к этому блоку кода в кэше
/**
* Gets the 'annotation_reader' service.
*
* This service is shared.
* This method always returns the same instance of the service.
*
* @return DoctrineCommonAnnotationsFileCacheReader A DoctrineCommonAnnotationsFileCacheReader instance.
*/
protected function getAnnotationReaderService()
{
return $this->services['annotation_reader'] = new DoctrineCommonAnnotationsFileCacheReader(new DoctrineCommonAnnotationsAnnotationReader(), '/path/to/application/app/cache/dev/annotations', true);
}
но я не могу найти способ остановить добавление этого в кеш, поскольку я не могу найти никаких настроек, относящихся к annotation_reader
.
Комментарии:
1. Я подозреваю, что на самом деле его невозможно удалить. Вам действительно нужно его удалить? Разве вы не можете просто игнорировать это?
2. Полагаю, я мог бы проигнорировать это, но предпочел бы иметь в проекте только пакеты, которые фактически используются проектом.
3. я согласен, и поскольку S2 построен на пакетах, я бы подумал, что он должен быть съемным. Что произойдет, если вы захотите использовать хранилище данных, отличное от doctrine.
Ответ №1:
Symfony использует библиотеку аннотаций Doctrine. Вам не нужны ORM или DBAL Doctrine, и вы можете их удалить. Но вам нужен читатель аннотаций, если вы используете аннотации в любом месте вашего проекта.
РЕДАКТИРОВАТЬ: вам придется протестировать его самостоятельно. Я никогда не пробовал это сам.
Похоже, что эти пакеты используют средство чтения аннотаций:
- DoctrineBundle
- DoctrineAbstractBundle
- SecurityExtraBundle
- FrameworkExtraBundle
- FrameworkBundle
Обратите внимание, что это, вероятно, не стоит усилий. Если вы не используете данные сервисы, они не создаются.
Комментарии:
1. Точно. Если вы используете аннотации контроллера, вам необходимо сохранить пакет Doctrine Common.
2. Кстати, это хорошо. Вместо того, чтобы изобретать велосипед заново, Symfony использует то, что уже существует в Doctrine.
3. Я также не использую аннотации. Я мог бы в будущем проекте, но не для этого проекта. Итак, вопрос в том, как мне отключить аннотации, чтобы приведенный выше блок кода не создавался? Единственное упоминание в конфигурации находится в разделе Framework: validation: { enable_annotations: true } . Установка этого значения в false не останавливает его.
4. Я тоже хотел бы получить ответ на этот вопрос, поскольку я намерен использовать Propel и не намерен использовать аннотации.
Ответ №2:
Возможно, вы захотите взглянуть на: http://fabien.potencier.org/article/50/create-your-own-framework-on-top-of-the-symfony2-components-part-1
и
😉