[英]Understanding Symfony2 services
我是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%]
從Symfony2詞匯表中獲取的定義:
服務是執行特定任務的任何PHP對象的通用術語。 服務通常“全局”使用,例如數據庫連接對象或傳遞電子郵件消息的對象。 在Symfony2中,通常從服務容器配置和檢索服務。 據說具有許多解耦服務的應用程序遵循面向服務的體系結構。
我認為你的例子是服務的完美候選人。
您不希望將構造代碼復制到您需要API客戶端的所有位置。 最好將此任務委托給依賴注入容器。
這樣就更容易維護(因為構造在一個地方發生並且可以配置)。
它也更靈活,因為您可以輕松更改API客戶端類,而不會影響使用它的代碼(只要它實現相同的接口)。
我不認為這是一條黃金法則。 但基本上所有實現任務的類都是服務的良好候選者。 另一方面,實體並不像他們通常只是數據持有者那樣。
我總是推薦Fabien關於這個主題的系列文章: http : //fabien.potencier.org/article/11/what-is-dependency-injection
是的,因為這樣可以省去配置部分。 每次需要此類時,您都不會獲取用戶名和密碼並將其提供給構造函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.