我是Symfony 2的新手,我正在转向服务等高级主题.应该何时将对象作为服务?
例如,假设您有一个Facade对象用于调用REST服务.该类需要用户名和密码.将该类建模为全局服务是否正确?即使它仅用于整个项目的一部分?
# app/config/config.yml
parameters:
my_proxy.username: username
my_proxy.password: password
services:
my_proxy:
class: Acme\TestBundle\MyProxy
arguments: [%my_proxy.username%, %my_proxy.password%]
Run Code Online (Sandbox Code Playgroud)
Jak*_*las 13
从Symfony2词汇表中获取的定义:
服务是执行特定任务的任何PHP对象的通用术语.服务通常"全局"使用,例如数据库连接对象或传递电子邮件消息的对象.在Symfony2中,通常从服务容器配置和检索服务.据说具有许多解耦服务的应用程序遵循面向服务的体系结构.
我认为你的例子是服务的完美候选人.
您不希望将构造代码复制到您需要API客户端的所有位置.最好将此任务委托给依赖注入容器.
这样就更容易维护(因为构造在一个地方发生并且可以配置).
它也更灵活,因为您可以轻松更改API客户端类,而不会影响使用它的代码(只要它实现相同的接口).
我不认为这是一条黄金法则.但基本上所有实现任务的类都是服务的良好候选者.另一方面,实体并不像他们通常只是数据持有者那样.
我总是推荐Fabien关于这个主题的系列文章:http://fabien.potencier.org/article/11/what-is-dependency-injection