Я использую Symfony CMF, PHPCR и SncRedisBundle. Я хочу добавить кэширование метаданных и узлов для PHPCR в SncRedisBundle.
В целях тестирования я изменил функцию loadDoctrine в файле Snc\RedisBundle\DependencyInjection\SncRedisExtension.php (см. комментарий «Переопределение определения метаданных PHPCR» для кода, который я добавил, 1 строка).
protected function loadDoctrine(array $config, ContainerBuilder $container)
{
foreach ($config['doctrine'] as $name => $cache) {
$client = new Reference(sprintf('snc_redis.%s_client', $cache['client']));
foreach ($cache['entity_managers'] as $em) {
$def = new Definition($container->getParameter('snc_redis.doctrine_cache.class'));
$def->setScope(ContainerInterface::SCOPE_CONTAINER);
$def->addMethodCall('setRedis', array($client));
if ($cache['namespace']) {
$def->addMethodCall('setNamespace', array($cache['namespace']));
}
$container->setDefinition(sprintf('doctrine.orm.%s_%s', $em, $name), $def);
}
foreach ($cache['document_managers'] as $dm) {
$def = new Definition($container->getParameter('snc_redis.doctrine_cache.class'));
$def->setScope(ContainerInterface::SCOPE_CONTAINER);
$def->addMethodCall('setRedis', array($client));
if ($cache['namespace']) {
$def->addMethodCall('setNamespace', array($cache['namespace']));
}
$container->setDefinition(sprintf('doctrine.odm.mongodb.%s_%s', $dm, $name), $def);
//PHPCR metadata definition override
$container->setDefinition(sprintf('doctrine_phpcr.odm.%s_%s', $dm, $name), $def);
}
}
}
Это работает для переопределения кеша метаданных, и я вижу в базе данных Redis, что записи метаданных заполняются.
Теперь я хочу переопределить кеш результатов узлов, но я не могу найти способ сделать это. Я не могу найти имя определения службы, которое можно использовать для переопределения. Может ли кто-нибудь указать мне в правильном направлении для этого?