public function register(Container $c) { $c['extra.paramconverter.auto_convert'] = true; $c['extra.paramconverter.manager'] = function ($c) { $converterManager = new ParamConverterManager(); if (isset($c['doctrine.registry'])) { $converterManager->add(new DoctrineParamConverter($c['doctrine.registry']), 10, 'doctrine.orm'); } $converterManager->add(new DateTimeParamConverter(), -5, 'datetime'); return $converterManager; }; $c['extra.controller_listener'] = function ($c) { return new ControllerListener($c['annotation.reader']); }; $c['extra.paramconverter_listener'] = function ($c) { return new ParamConverterListener($c['extra.paramconverter.manager'], $c['extra.paramconverter.auto_convert']); }; $c['extra.httpcache_listener'] = function () { return new HttpCacheListener(); }; $c['extra.security.expression_language'] = function () { return new ExpressionLanguage(); }; $c['extra.security_listener'] = function ($c) { return new SecurityListener(isset($c['security.context']) ? $c['security.context'] : null, $c['extra.security.expression_language'], isset($c['security.authentication.trust_resolver']) ? $c['security.authentication.trust_resolver'] : null, isset($c['security.role_hierarchy']) ? $c['security.role_hierarchy'] : null); }; }
public function register(Container $app) { if (!isset($app['routing.loader.resolver'])) { throw new \LogicException('You must register the RoutingServiceProvider to use the SensioFrameworkExtraServiceProvider.'); } if (!isset($app['annotations'])) { throw new \LogicException('You must register the AnnotationsServiceProvider to use the SensioFrameworkExtraServiceProvider.'); } if (!isset($app['templating'])) { throw new \LogicException('You must register the TemplatingServiceProvider to use the SensioFrameworkExtraServiceProvider.'); } $app['sensio_framework_extra.routing.loader.annot_dir'] = function (Container $app) { return new AnnotationDirectoryLoader(new FileLocator(), $app['sensio_framework_extra.routing.loader.annot_class']); }; $app['sensio_framework_extra.routing.loader.annot_file'] = function (Container $app) { return new AnnotationFileLoader(new FileLocator(), $app['sensio_framework_extra.routing.loader.annot_class']); }; $app['sensio_framework_extra.routing.loader.annot_class'] = function (Container $app) { return new AnnotatedRouteControllerLoader($app['annotations']); }; // listeners $app['sensio_framework_extra.controller.listener'] = function (Container $app) { return new ControllerListener($app['annotations']); }; $app['sensio_framework_extra.cache.listener'] = function () { return new HttpCacheListener(); }; $app['sensio_framework_extra.security.listener'] = function (Container $app) { $getOr = function ($name, $notfound = null) use($app) { return isset($app[$name]) ? $app[$name] : $notfound; }; return new SecurityListener(null, $app['sensio_framework_extra.security.expression_language'], $getOr('security.trust_resolver'), new RoleHierarchy($getOr('security.role_hierarchy', [])), $getOr('security.token_storage'), $getOr('security.authorization_checker')); }; $app['sensio_framework_extra.view.listener'] = function (Container $app) { return new TemplateListener($app['templating'], new TemplateGuesser()); }; $app['sensio_framework_extra.converter.listener'] = function (Container $app) { return new ParamConverterListener($app['sensio_framework_extra.converter.manager'], true); }; $app['sensio_framework_extra.psr7.listener.response'] = function (Container $app) { return new PsrResponseListener($app['sensio_framework_extra.psr7.http_foundation_factory']); }; $app['sensio_framework_extra.security.expression_language'] = function () { return new ExpressionLanguage(); }; $app['sensio_framework_extra.converter.manager'] = function (Container $app) { $manager = new ParamConverterManager(); $manager->add($app['sensio_framework_extra.converter.datetime']); if (class_exists('Symfony\\Bridge\\PsrHttpMessage\\Factory\\HttpFoundationFactory')) { $manager->add($app['sensio_framework_extra.psr7.converter.server_request']); } if (isset($app['doctrine'])) { $manager->add($app['sensio_framework_extra.converter.doctrine.orm']); } return $manager; }; $app['sensio_framework_extra.psr7.http_message_factory'] = function () { return new DiactorosFactory(); }; $app['sensio_framework_extra.psr7.http_foundation_factory'] = function () { return new HttpFoundationFactory(); }; $app['sensio_framework_extra.psr7.converter.server_request'] = function (Container $app) { return new PsrServerRequestParamConverter($app['sensio_framework_extra.psr7.http_message_factory']); }; $app['sensio_framework_extra.converter.doctrine.orm'] = function (Container $app) { return new DoctrineParamConverter($app['doctrine']); }; $app['sensio_framework_extra.converter.datetime'] = function () { return new DateTimeParamConverter(); }; $app['routing.loader.resolver'] = $app->extend('routing.loader.resolver', function (LoaderResolverInterface $resolver, Container $app) { $resolver->addLoader($app['sensio_framework_extra.routing.loader.annot_dir']); $resolver->addLoader($app['sensio_framework_extra.routing.loader.annot_file']); $resolver->addLoader($app['sensio_framework_extra.routing.loader.annot_class']); return $resolver; }); }
public function testApplyNotCalledOnAlreadyConvertedObjects() { $converter = $this->createParamConverterMock(); $converter->expects($this->never())->method('supports'); $converter->expects($this->never())->method('apply'); $request = new Request(); $request->attributes->set('converted', new \stdClass()); $configuration = new Configuration\ParamConverter(array('name' => 'converted', 'class' => 'stdClass')); $manager = new ParamConverterManager(); $manager->add($converter); $manager->apply($request, array($configuration)); }