Symfony可重用服务

Symfony可重用服务,symfony,service,bundle,Symfony,Service,Bundle,每个人都在谈论symfony中的可重用捆绑包,但是可重用服务呢?它们应该易于重复使用吗?他们有时不应该吗?我正在考虑将一些服务移出我的包,并将其直接放入/src/services。例如,我有一个语法分析器,它以前在ForumBundle中使用过,但现在我想在另一个包中使用它 但后来我想,它也可以用于其他项目,这不是很常见吗?因为服务比捆绑包更简单,所以耦合性应该更低 有时我甚至不确定我的服务是否不应该成为一个完整的捆绑包,我如何才能将这两种方法的任务分开?我不确定,但我认为在使用生成:捆绑包控制

每个人都在谈论symfony中的可重用捆绑包,但是可重用服务呢?它们应该易于重复使用吗?他们有时不应该吗?我正在考虑将一些服务移出我的包,并将其直接放入/src/services。例如,我有一个语法分析器,它以前在ForumBundle中使用过,但现在我想在另一个包中使用它

但后来我想,它也可以用于其他项目,这不是很常见吗?因为服务比捆绑包更简单,所以耦合性应该更低


有时我甚至不确定我的服务是否不应该成为一个完整的捆绑包,我如何才能将这两种方法的任务分开?

我不确定,但我认为在使用
生成:捆绑包
控制台命令时,您可能需要回答

$ 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.

然后在这个新创建的捆绑包中声明您的服务,然后,在另一个应用程序中,如果您正在使用新创建的捆绑包,则意味着您也会自动使用这些服务。

我建议您查看开放源代码库和捆绑包的结构

例如,
KnpMenuBundle
是最流行的捆绑包之一。 它依赖于
KnpMenu
库,该库包含所有业务逻辑:必要类和方法、模板等。
KnpMenu
库可以在没有
KnpMenuBundle
的情况下使用

捆绑包只是库和symfony应用程序之间的包装器或桥梁,您可以在其中注册服务、配置服务并绑定库