簡體   English   中英

了解Symfony2服務

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM