我創建的Symfony2的頂部的簡單引擎收錄的Web應用程序,但我不能讓一個全球性的/單/「容器範圍的」服務。我可能會犯一個初學者的錯誤。Symfony2的服務不是單
The symfony2 service container doc表示服務「只創建一次,並且每次請求服務時返回相同的實例」,但是我的服務構造函數在每個請求中都被調用。
我可以從日誌很容易地驗證這一點。我剛剛刷新/p/new
,我看到另一個
[2012-03-31 21:32:56] app.INFO: InMemoryPasteService::__construct() [] []
我也證實了記錄的
spl_object_hash($this->get('twobulb_paste_service'))
結果在控制器(和哈希不同的是爲每一個請求)。
環境(應用程序/ PROD)似乎並不重要。
How to work with Scopes表示默認範圍是「容器」,所以我認爲這意味着,應該只有我的服務類的一個實例。
我開始與Symfony的標準分配(不包括供應商)版本2.0.12。
的源代碼:
可能類似的帖子:
- https://stackoverflow.com/questions/8873824/symfony2-service-definition-issue
- Symfony2 Service Container - does get() return objects by reference or copy?個
- How Service Container create object declared in services.yml?
任何想法?
爲什麼地球上你會故意使用單身.. **任何事情**!?你的'InMemoryPasteService :: fetchMany()'方法也沒有意義。 – 2012-04-01 11:29:07
@tereško對不起,我對編程語言設計瞭解不多,單身人士可能不是合適的單詞。也許[這個文檔](http://symfony.com/doc/current/book/service_container.html)將幫助你理解爲什麼Symfony2鼓勵使用服務。至於fetchMany(),代碼是一個正在進行的工作。我剛剛更新了這個方法。現在對你有意義嗎? – 2012-04-01 22:57:13