2017-09-27 25 views
0

如何配置我創建的服務能夠被類型提示?我看過的所有服務容器文檔,以及任何與symfony的文檔並沒有什麼我試圖做作品......Symfony3類型提示創建的服務

將此添加到services.yml

Tester:  
     class: AppBundle\Services\Tester 
     public: true 

將此添加到我的課

use AppBundle\Services\Tester; 

嘗試鍵入提示「Tester $ test」並獲取錯誤。做錯事...

+0

你會得到什麼錯誤? –

+0

當我嘗試添加郵件例如,它告訴我該類不存在.... – dlhines

+0

其實,這裏是確切的輸出...代碼是有點不同,但錯誤是相同的... 類型錯誤:傳遞給AppBundle \ Services \ Tester :: onTest()的參數1必須是SwiftMailer的一個實例,沒有給出,在/home/xXxX/symfony-test-sites/xXxX/src/AppBundle/Controller/TestLoggerController.php中調用在線30 – dlhines

回答

0

在這種情況下,Tester是一個服務名稱,而不是作爲服務的類名稱。

如果在該位置的類,你也希望它是公共的(在$container->get('\AppBundle\Services\Tester')->get(Tester::class)使用,你可以這樣定義它。

AppBundle\Services\Tester: 
    public: true 

如果你只打算要使用它作爲一個類型提示,你不需要public:true,並且如果這個類是從其他地方導入的(可能在同一個文件的後面),你可能根本不需要這些行,除非它有參數如果你只需要它是get() -able在一個測試環境中,它可以值得創建一個服務別名,只爲services_tesy.yml:

# available as ->get('test_Tester') in a test 
test_Tester: 
    class: AppBundle\Services\Tester: 
    public: true 
+0

我明白你在說什麼。我真的忘記了它。我暫時忽略了它。我現在明白了,並且找到了一種方法來解決問題。謝謝! – dlhines

0

我找到了我需要的東西。我在Eclipse中遇到了yaml編輯器的問題。它製造了一堆標籤,並且在其他領域也不斷給我帶來問題。我最終安裝了YEdit,一切似乎都奏效。

謝謝你們!