#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, где вы регистрируете сервисы, настраиваете их и связываете с библиотеками