我在安装 Symfony 2.0.16 时遇到了严重问题。为简单服务生成的缓存文件是错误的。
一种服务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);
}
那么,出了什么问题,我该如何解决?