Symfony 2.0.16 のインストールで深刻な問題が発生しました。シンプルなサービス用に生成されたキャッシュ ファイルが間違っています。
1 つのサービスreplacer.factory
、一種の工場の 1 つ。簡略化されたバージョンのみを示します。
/**
* @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);
}
それで、何が間違っていて、どうすれば解決できますか?