Symfony2 — Как удалить пакет Doctrine?

#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: