1010use Symfony \Component \DependencyInjection \Compiler \CompilerPassInterface ;
1111use Symfony \Component \DependencyInjection \Definition ;
1212use Symfony \Component \DependencyInjection \Reference ;
13+ use Cache \Doctrine \CachePoolItem ;
1314
1415/**
15- * Class AequasiCacheExtension.
1616 *
1717 * @author Aaron Scherer <[email protected] > 18+ * @author Tobias Nyholm <[email protected] > 1819 */
1920class DoctrineAdapterExtension extends Extension
2021{
@@ -69,8 +70,8 @@ protected function process(ContainerBuilder $container)
6970 $ providers = $ container ->getParameter ('cache_adapter_doctrine.providers ' );
7071
7172 foreach ($ providers as $ name => $ provider ) {
72- $ typeServiceId = sprintf ('cache.doctrine_adapter.abstract.%s ' , $ provider ['type ' ]);
7373 $ classParameter = sprintf ('cache.doctrine_adapter.%s.class ' ,$ provider ['type ' ]);
74+ $ doctrineServiceId = sprintf ('cache.doctrine_adapter.doctrine_service.%s ' , $ provider ['type ' ]);
7475 if (!$ container ->hasParameter ($ classParameter )) {
7576 throw new InvalidConfigurationException (
7677 sprintf (
@@ -80,49 +81,30 @@ protected function process(ContainerBuilder $container)
8081 )
8182 );
8283 }
83- $ class = $ container ->getParameter ($ classParameter );
84+ $ doctrineClass = $ container ->getParameter ($ classParameter );
8485
85- $ this ->createDoctrineCacheDefinition ($ container , $ typeServiceId , $ class , $ name , $ provider );
86- $ this ->createPsr7CompliantService ($ container , $ typeServiceId , $ name );
86+ $ this ->createDoctrineCacheDefinition ($ container , $ doctrineServiceId , $ doctrineClass , $ name , $ provider );
87+ $ this ->createPsr7CompliantService ($ container , $ doctrineServiceId , $ name );
8788 }
8889 }
8990
90- /**
91- * Make sure to create a PRS-6 service that wraps the doctrine service.
92- *
93- * @param ContainerBuilder $container
94- * @param string $typeServiceId
95- * @param string $name
96- */
97- private function createPsr7CompliantService (ContainerBuilder $ container , $ typeServiceId , $ name )
98- {
99- // This is the service id for the PSR6 provider. This is the one that we use.
100- $ serviceId = 'cache.doctrine_adapter.provider. ' .$ name ;
101-
102- // Register the CacheItemPoolInterface definition
103- $ def = new Definition (\Cache \Doctrine \CachePoolItem::class);
104- $ def ->addArgument (new Reference ($ typeServiceId ));
105- $ def ->setTags (['cache.provider ' =>[]]);
10691
107- $ container ->setDefinition ($ serviceId , $ def );
108- $ container ->setAlias ('cache.provider. ' .$ name , $ serviceId );
109- }
11092
11193 /**
11294 * We need to prepare the doctrine cache providers.
11395 *
11496 * @param ContainerBuilder $container
115- * @param string $typeServiceId
116- * @param string $class
97+ * @param string $doctrineServiceId
98+ * @param string $doctrineClass
11799 * @param string $name
118100 * @param array $provider
119101 */
120- private function createDoctrineCacheDefinition (ContainerBuilder $ container , $ typeServiceId , $ class , $ name , array $ provider )
102+ protected function createDoctrineCacheDefinition (ContainerBuilder $ container , $ doctrineServiceId , $ doctrineClass , $ name , array $ provider )
121103 {
122104 $ namespace = is_null ($ provider ['namespace ' ]) ? $ name : $ provider ['namespace ' ];
123105
124106 // Create a service for the requested doctrine cache
125- $ definition = new Definition ($ class );
107+ $ definition = new Definition ($ doctrineClass );
126108 $ definition ->addMethodCall ('setNamespace ' , [$ namespace ])
127109 ->setPublic (false );
128110
@@ -157,11 +139,33 @@ private function createDoctrineCacheDefinition(ContainerBuilder $container, $typ
157139 case 'sqlite ' :
158140 case 'riak ' :
159141 case 'chain ' :
142+ throw new \InvalidArgumentException (sprintf ('The cache provider type "%s" is not yet implemented. ' , $ type ));
160143 break ;
161144 }
162145
163146 // Add the definition to the container
164- $ container ->setDefinition ($ typeServiceId , $ definition );
147+ $ container ->setDefinition ($ doctrineServiceId , $ definition );
148+ }
149+
150+ /**
151+ * Make sure to create a PRS-6 service that wraps the doctrine service.
152+ *
153+ * @param ContainerBuilder $container
154+ * @param string $doctrineServiceId
155+ * @param string $name
156+ */
157+ protected function createPsr7CompliantService (ContainerBuilder $ container , $ doctrineServiceId , $ name )
158+ {
159+ // This is the service id for the PSR6 provider. This is the one that we use.
160+ $ serviceId = 'cache.doctrine_adapter.provider. ' .$ name ;
161+
162+ // Register the CacheItemPoolInterface definition
163+ $ def = new Definition (CachePoolItem::class);
164+ $ def ->addArgument (new Reference ($ doctrineServiceId ));
165+ $ def ->setTags (['cache.provider ' =>[]]);
166+
167+ $ container ->setDefinition ($ serviceId , $ def );
168+ $ container ->setAlias ('cache.provider. ' .$ name , $ serviceId );
165169 }
166170
167171 /**
@@ -172,7 +176,7 @@ private function createDoctrineCacheDefinition(ContainerBuilder $container, $typ
172176 *
173177 * @return Definition
174178 */
175- public function createProviderHelperDefinition ($ type , array $ provider )
179+ private function createProviderHelperDefinition ($ type , array $ provider )
176180 {
177181 $ helperDefinition = new Definition (self ::$ types [$ type ]['class ' ]);
178182 $ helperDefinition ->setPublic (false );
0 commit comments