gpt4 book ai didi

symfony - 了解 Symfony2 服务

转载 作者:行者123 更新时间:2023-12-02 15:23:25 27 4
gpt4 key购买 nike

我对 Symfony 2 还很陌生,我正在转向高级主题,例如 services 。对象什么时候应该成为服务?

例如,假设您有一个用于调用 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%]

最佳答案

定义取自Symfony2 glossary :

A Service is a generic term for any PHP object that performs a specific task. A service is usually used "globally", such as a database connection object or an object that delivers email messages. In Symfony2, services are often configured and retrieved from the service container. An application that has many decoupled services is said to follow a service-oriented architecture.

我认为您的示例是服务的完美候选者。

您不想将构造代码复制到需要 API 客户端的所有位置。最好将此任务委托(delegate)给依赖注入(inject)容器。

这种方式更容易维护(因为构建发生在一个地方并且是可配置的)。

它也更加灵活,因为您可以轻松更改 API 客户端类,而不会影响使用它的代码(只要它实现相同的接口(interface))。

我认为没有黄金法则。但基本上所有实现任务的类都是服务的良好候选者。另一方面,实体并不像它们通常只是数据持有者。

我总是推荐 Fabien 关于该主题的系列文章:http://fabien.potencier.org/article/11/what-is-dependency-injection

关于symfony - 了解 Symfony2 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8193751/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com