當我創建自己的服務時,看起來每次都會創建我的對象。在Symfony 2開發模式下,每個請求都重建容器
服務:
services:
plbcache:
class: Robusta\PlbBundle\Cache\LruCache
arguments: [10, %timeout%, %enableCache%]
類:
class LruCache {
public function __construct($capacity=10, $timeout=-1, $enabled=true) {
echo "creating the cache"; // Appear at each request
$this->capacity = $capacity;
$this->timeout = $timeout;
$this->enabled = $enabled;
}
}
很顯然,我現在的問題來測試我的對象是在緩存中,如果我的緩存對象每次重建。
對於我所瞭解的,Symfony的服務容器是一個單例,默認情況下給出單例 - 認爲它可以配置爲原型或客戶端會話。所以它應該在每次請求後給我相同的服務對象。
我不得不在文檔中看到容器在開發環境中重建。我錯過了什麼,或者我的代碼錯了? 如何防止dev模式重建我的緩存對象?
你爲什麼不考慮使用會話?每個請求 - 至少在teorically - 與上一個沒有任何關係,因此每次重建對象都是強制性的和正確的。如果你的業務邏輯以另一種方式行事,你應該自己動手 – DonCallisto 2014-12-06 08:17:56
對於我所瞭解的,Symfony的服務容器是一個單例。所以它在每次請求後都提供相同的服務。 – 2014-12-06 09:33:47