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);
}
那麼,什麼是錯的,我怎麼能解決呢?
你確定這是錯的嗎? 'getReplacer_FactoryService()'聽起來像**應該返回一個工廠,它是 – JamesHalsall