Повторно используемые сервисы Symfony

#symfony #service #bundle

#symfony #Обслуживание #пакет

Вопрос:

Все говорят о многоразовых пакетах в symfony, но как насчет многоразовых сервисов? Должны ли они быть легко повторно используемыми? Должны ли они иногда этого не делать? Я просто думал о том, чтобы перенести некоторые сервисы за пределы моего пакета и поместить его непосредственно в /src / services. Например, у меня есть синтаксический анализатор, который раньше был в ForumBundle, но теперь я хочу использовать его и в другом пакете.

Но потом я подумал, что это могло бы также использоваться в других проектах, разве это не распространено, потому что сервисы должны быть менее связанными, потому что они проще, чем пакеты?

Иногда я даже не уверен, не должен ли мой сервис стать полным пакетом, как я могу разделить задачи этих двух методов?

Ответ №1:

Я не уверен, но я думаю, что вам может понадобиться ответить с помощью yes при использовании generate:bundle консольной команды:

 $ php app/console generate:bundle

Are you planning on sharing this bundle across multiple applications? [no]: yes
Your application code must be written in bundles. This command helps you generate them easily.

Each bundle is hosted under a namespace (like Acme/BlogBundle). The namespace should begin with a "vendor" name like your company name, your project name, or your client name, followed by one or more optional category sub-namespaces, and it should end with the bundle name itself (which must have Bundle as a suffix).

See http://symfony.com/doc/current/cookbook/bundles/best_practices.html#bundle-name for more details on bundle naming conventions.

Use / instead of   for the namespace delimiter to avoid any problem.
  

А затем объявите свои сервисы внутри этого нового созданного пакета, а затем, внутри другого приложения, которое у вас может быть, если вы используете новый созданный пакет, означает, что вы автоматически используете и эти сервисы.

Ответ №2:

Я рекомендую вам взглянуть на структуру библиотек и пакетов с открытым исходным кодом.

Например, KnpMenuBundle является одним из самых популярных пакетов. Это зависит от KnpMenu библиотеки, в которой есть вся бизнес-логика: необходимые классы и методы, шаблоны и т.д. KnpMenu библиотеку можно использовать без KnpMenuBundle .

Пакет — это всего лишь оболочка или мост между библиотекой и приложением symfony, где вы регистрируете сервисы, настраиваете их и связываете с библиотеками