2012-09-05 47 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。