2016-10-21 3 views
-1

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

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

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

ответ

0

Я не уверен, но я думаю, что вам могут понадобиться, чтобы ответить 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. 

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

0

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

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

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