2012-09-05 77 views
1

我對Symfony 2.0.16安裝有一個嚴重的問題。爲簡單服務生成的緩存文件是錯誤的。Symfony 2錯誤產生錯誤的緩存文件

一個服務replacer.factory,工廠之一。我將只顯示一個簡化版本:

/** 
* @DI\Service("replacer.factory") 
*/ 
class ReplacerFactory 
{ 

    /** 
    * @DI\InjectParams({"container" = @DI\Inject("service_container")}) 
    */ 
    public function __construct(ContainerInterface $container) 
    { 
     $this->container = $container; 
    } 

    public function getReplacer($object) 
    { 
     $replacer = new NewsletterReplacer($this->container); 

     // Return the instance of NewsletterReplacer class 
     return $replacer->setInstance($object); 
    } 

} 

這是實例返回,又有點簡單:

class NewsletterReplacer 
{ 

    private $container; 

    private $instance; 

    public function __construct(ContainerInterface $container) 
    { 
     $this->container = $container; 
    } 

    public function setInstance(Newsletter $newsletter) 
    { 
     $this->instance = $newsletter; 
    } 
} 

出於某種原因,產生緩存文件是完全錯誤

其實,這是appDevProjectContainer.php文件的一部分,該命令php app/console cache:clear --env=dev --no-debug後:

protected function getReplacer_FactoryService() 
{ 
    return $this->services['replacer.factory'] 
     = new \Acme\HelloBundle\Service\Replacer\NewsletterReplacer(); 
} 

應該改爲:

protected function getReplacer_FactoryService() 
{ 
    return $this->services['replacer.factory'] 
     = new \Acme\HelloBundle\Service\Replacer\ReplacerFactory($this); 
} 

那麼,什麼是錯的,我怎麼能解決呢?

+0

你確定這是錯的嗎? 'getReplacer_FactoryService()'聽起來像**應該返回一個工廠,它是 – JamesHalsall

回答

0

這是一個帶有JMSDiExtraBundle標註的PHP錯誤,參見this issue。解決了更新PHP 5.3.3-7。