如何获取缓存驱动程序?(带条令/Redis缓存的Symfony2)
为了在我的Symfony2应用程序中使用Redis Cache,我遵循了以下步骤(法语,对不起!) 一切都很好,除了我使用实体监听器的部分,它来自原则事件,用于在数据库写入时更新缓存。。。我有这样的服务:如何获取缓存驱动程序?(带条令/Redis缓存的Symfony2),symfony,caching,orm,redis,doctrine,Symfony,Caching,Orm,Redis,Doctrine,为了在我的Symfony2应用程序中使用Redis Cache,我遵循了以下步骤(法语,对不起!) 一切都很好,除了我使用实体监听器的部分,它来自原则事件,用于在数据库写入时更新缓存。。。我有这样的服务: <?php namespace Maxpou\BeerBundle\Service; use Doctrine\ORM\Event\LifecycleEventArgs; use Maxpou\BeerBundle\Entity\Beer; class BeerListener {
<?php
namespace Maxpou\BeerBundle\Service;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Maxpou\BeerBundle\Entity\Beer;
class BeerListener
{
private $cacheDriver;
public function __construct($cacheDriver)
{
$this->cacheDriver = $cacheDriver;
}
public function postPersist(Beer $beer, LifecycleEventArgs $args)
{
$this->cacheDriver->expire('[beers_all][1]', 0);
}
public function postUpdate(Beer $beer, LifecycleEventArgs $args)
{
$this->cacheDriver->expire('[beers_all][1]', 0);
}
public function postRemove(Beer $beer, LifecycleEventArgs $args)
{
$this->cacheDriver->expire('[beers_all][1]', 0);
}
}
在我的实体中,我添加了以下注释:
* @ORM\EntityListeners({"Maxpou\BeerBundle\Service\BeerListener"})
当我尝试执行更新时,出现以下错误:
Fatal error: Uncaught ArgumentCountError: Too few arguments to function Maxpou\BeerBundle\Service\BeerListener::__construct(), 0 passed in /var/www/admin2/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/DefaultEntityListenerResolver.php on line 73 and exactly 1 expected in /var/www/admin2/src/Maxpou/BeerBundle/Service/BeerListener.php:12
Stack trace:
#0 /var/www/admin2/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/DefaultEntityListenerResolver.php(73): Maxpou\BeerBundle\Service\BeerListener->__construct()
#1 /var/www/admin2/vendor/doctrine/orm/lib/Doctrine/ORM/Event/ListenersInvoker.php(110): Doctrine\ORM\Mapping\DefaultEntityListenerResolver->resolve('Maxpou\\BeerBundle\\...')
#2 /var/www/admin2/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(1075): Doctrine\ORM\Event\ListenersInvoker->invoke(Object(Doctrine\ORM\Mapping\ClassMetadata), 'postUpdate', Object(Maxpou\BeerBundle\Entity\Beer), Object(Doctrine\ORM\Event\LifecycleEventArgs), 3)
#3 /var/www/admin2/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(384): Doctrine\ORM\Unit in /var/www/admin2/src/Maxpou/BeerBundle/Service/BeerListener.php on line 12
看来,我的BeerListener中没有$cacheDriver参数
有人会知道为什么
PS:我使用“symfony/symfony”:“~2.5.0”,“条令/orm”:“~2.2”,“条令/条令包”:“~1.2”,“条令/条令缓存包”:“~1.0”,“snc/redis包”:“1.1.x”,“predis/predis”:“^1.0”(在NGINX/PHP-7.1 env中)
Fatal error: Uncaught ArgumentCountError: Too few arguments to function Maxpou\BeerBundle\Service\BeerListener::__construct(), 0 passed in /var/www/admin2/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/DefaultEntityListenerResolver.php on line 73 and exactly 1 expected in /var/www/admin2/src/Maxpou/BeerBundle/Service/BeerListener.php:12
Stack trace:
#0 /var/www/admin2/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/DefaultEntityListenerResolver.php(73): Maxpou\BeerBundle\Service\BeerListener->__construct()
#1 /var/www/admin2/vendor/doctrine/orm/lib/Doctrine/ORM/Event/ListenersInvoker.php(110): Doctrine\ORM\Mapping\DefaultEntityListenerResolver->resolve('Maxpou\\BeerBundle\\...')
#2 /var/www/admin2/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(1075): Doctrine\ORM\Event\ListenersInvoker->invoke(Object(Doctrine\ORM\Mapping\ClassMetadata), 'postUpdate', Object(Maxpou\BeerBundle\Entity\Beer), Object(Doctrine\ORM\Event\LifecycleEventArgs), 3)
#3 /var/www/admin2/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(384): Doctrine\ORM\Unit in /var/www/admin2/src/Maxpou/BeerBundle/Service/BeerListener.php on line 12