diff --git a/src/Silex/Api/BootableProviderInterface.php b/src/Silex/Api/BootableProviderInterface.php new file mode 100644 index 000000000..a16b9448b --- /dev/null +++ b/src/Silex/Api/BootableProviderInterface.php @@ -0,0 +1,31 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Silex\Api; + +use Silex\Application; + +/** + * Interface that must implement all Silex service providers. + * + * @author Fabien Potencier + */ +interface BootableProviderInterface +{ + /** + * Bootstraps the application. + * + * This method is called after all services are registered + * and should be used for "dynamic" configuration (whenever + * a service must be requested). + */ + public function boot(Application $app); +} diff --git a/src/Silex/Api/ServiceProviderInterface.php b/src/Silex/Api/ServiceProviderInterface.php index 1cb2689b1..ec03549f0 100644 --- a/src/Silex/Api/ServiceProviderInterface.php +++ b/src/Silex/Api/ServiceProviderInterface.php @@ -29,13 +29,4 @@ interface ServiceProviderInterface * @param Application $app An Application instance */ public function register(Application $app); - - /** - * Bootstraps the application. - * - * This method is called after all services are registered - * and should be used for "dynamic" configuration (whenever - * a service must be requested). - */ - public function boot(Application $app); } diff --git a/src/Silex/Application.php b/src/Silex/Application.php index 7d1416413..ee53aba1c 100644 --- a/src/Silex/Application.php +++ b/src/Silex/Application.php @@ -30,6 +30,7 @@ use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\Routing\RouteCollection; use Symfony\Component\Routing\RequestContext; +use Silex\Api\BootableProviderInterface; use Silex\Api\EventListenerProviderInterface; use Silex\Api\ControllerProviderInterface; use Silex\Api\ServiceProviderInterface; @@ -189,7 +190,9 @@ public function boot() $provider->subscribe($this, $this['dispatcher']); } - $provider->boot($this); + if ($provider instanceof BootableProviderInterface) { + $provider->boot($this); + } } } } diff --git a/src/Silex/Provider/DoctrineServiceProvider.php b/src/Silex/Provider/DoctrineServiceProvider.php index 581b3be71..24b9a546f 100644 --- a/src/Silex/Provider/DoctrineServiceProvider.php +++ b/src/Silex/Provider/DoctrineServiceProvider.php @@ -127,8 +127,4 @@ public function register(Application $app) return $dbs[$app['dbs.default']]; }); } - - public function boot(Application $app) - { - } } diff --git a/src/Silex/Provider/FormServiceProvider.php b/src/Silex/Provider/FormServiceProvider.php index 90630300c..592ae87b2 100644 --- a/src/Silex/Provider/FormServiceProvider.php +++ b/src/Silex/Provider/FormServiceProvider.php @@ -103,8 +103,4 @@ public function register(Application $app) return new DefaultCsrfProvider($app['form.secret']); }); } - - public function boot(Application $app) - { - } } diff --git a/src/Silex/Provider/HttpCacheServiceProvider.php b/src/Silex/Provider/HttpCacheServiceProvider.php index 00a6b7a01..aa7395463 100644 --- a/src/Silex/Provider/HttpCacheServiceProvider.php +++ b/src/Silex/Provider/HttpCacheServiceProvider.php @@ -58,8 +58,4 @@ public function subscribe(Application $app, EventDispatcherInterface $dispatcher { $dispatcher->addSubscriber($app['http_cache.esi_listener']); } - - public function boot(Application $app) - { - } } diff --git a/src/Silex/Provider/HttpFragmentServiceProvider.php b/src/Silex/Provider/HttpFragmentServiceProvider.php index 09cfe803c..a48b7f525 100644 --- a/src/Silex/Provider/HttpFragmentServiceProvider.php +++ b/src/Silex/Provider/HttpFragmentServiceProvider.php @@ -82,8 +82,4 @@ public function subscribe(Application $app, EventDispatcherInterface $dispatcher { $dispatcher->addSubscriber($app['fragment.listener']); } - - public function boot(Application $app) - { - } } diff --git a/src/Silex/Provider/MonologServiceProvider.php b/src/Silex/Provider/MonologServiceProvider.php index f54886040..74c5891e6 100644 --- a/src/Silex/Provider/MonologServiceProvider.php +++ b/src/Silex/Provider/MonologServiceProvider.php @@ -15,6 +15,7 @@ use Monolog\Handler\StreamHandler; use Silex\Application; use Silex\Api\ServiceProviderInterface; +use Silex\Api\BootableProviderInterface; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -26,7 +27,7 @@ * * @author Fabien Potencier */ -class MonologServiceProvider implements ServiceProviderInterface +class MonologServiceProvider implements ServiceProviderInterface, BootableProviderInterface { public function register(Application $app) { diff --git a/src/Silex/Provider/RememberMeServiceProvider.php b/src/Silex/Provider/RememberMeServiceProvider.php index b3347ed5f..e180aed67 100644 --- a/src/Silex/Provider/RememberMeServiceProvider.php +++ b/src/Silex/Provider/RememberMeServiceProvider.php @@ -103,8 +103,4 @@ public function subscribe(Application $app, EventDispatcherInterface $dispatcher { $dispatcher->addSubscriber($app['security.remember_me.response_listener']); } - - public function boot(Application $app) - { - } } diff --git a/src/Silex/Provider/SecurityServiceProvider.php b/src/Silex/Provider/SecurityServiceProvider.php index bf6adb109..1495c332b 100644 --- a/src/Silex/Provider/SecurityServiceProvider.php +++ b/src/Silex/Provider/SecurityServiceProvider.php @@ -12,6 +12,7 @@ namespace Silex\Provider; use Silex\Application; +use Silex\Api\BootableProviderInterface; use Silex\Api\ControllerProviderInterface; use Silex\Api\ServiceProviderInterface; use Silex\Api\EventListenerProviderInterface; @@ -60,7 +61,7 @@ * * @author Fabien Potencier */ -class SecurityServiceProvider implements ServiceProviderInterface, EventListenerProviderInterface, ControllerProviderInterface +class SecurityServiceProvider implements ServiceProviderInterface, EventListenerProviderInterface, ControllerProviderInterface, BootableProviderInterface { protected $fakeRoutes; diff --git a/src/Silex/Provider/SerializerServiceProvider.php b/src/Silex/Provider/SerializerServiceProvider.php index 71576d809..d02e8e4ec 100644 --- a/src/Silex/Provider/SerializerServiceProvider.php +++ b/src/Silex/Provider/SerializerServiceProvider.php @@ -49,15 +49,4 @@ public function register(Application $app) return array(new CustomNormalizer(), new GetSetMethodNormalizer()); }); } - - /** - * {@inheritDoc} - * - * This provider does not execute any code when booting. - * - * @param Silex\Application $app - */ - public function boot(Application $app) - { - } } diff --git a/src/Silex/Provider/ServiceControllerServiceProvider.php b/src/Silex/Provider/ServiceControllerServiceProvider.php index d565ea36b..5e47561a4 100644 --- a/src/Silex/Provider/ServiceControllerServiceProvider.php +++ b/src/Silex/Provider/ServiceControllerServiceProvider.php @@ -23,9 +23,4 @@ public function register(Application $app) return new ServiceControllerResolver($resolver, $app['callback_resolver']); })); } - - public function boot(Application $app) - { - // noop - } } diff --git a/src/Silex/Provider/SessionServiceProvider.php b/src/Silex/Provider/SessionServiceProvider.php index ff762ac13..28fd7b074 100644 --- a/src/Silex/Provider/SessionServiceProvider.php +++ b/src/Silex/Provider/SessionServiceProvider.php @@ -85,8 +85,4 @@ public function subscribe(Application $app, EventDispatcherInterface $dispatcher $app['dispatcher']->addSubscriber($app['session.listener.test']); } } - - public function boot(Application $app) - { - } } diff --git a/src/Silex/Provider/SwiftmailerServiceProvider.php b/src/Silex/Provider/SwiftmailerServiceProvider.php index 5814c9000..fa0da1118 100644 --- a/src/Silex/Provider/SwiftmailerServiceProvider.php +++ b/src/Silex/Provider/SwiftmailerServiceProvider.php @@ -98,8 +98,4 @@ public function subscribe(Application $app, EventDispatcherInterface $dispatcher } }); } - - public function boot(Application $app) - { - } } diff --git a/src/Silex/Provider/TranslationServiceProvider.php b/src/Silex/Provider/TranslationServiceProvider.php index 8991ca274..8533f6018 100644 --- a/src/Silex/Provider/TranslationServiceProvider.php +++ b/src/Silex/Provider/TranslationServiceProvider.php @@ -53,8 +53,4 @@ public function register(Application $app) $app['translator.domains'] = array(); $app['locale_fallbacks'] = array('en'); } - - public function boot(Application $app) - { - } } diff --git a/src/Silex/Provider/TwigServiceProvider.php b/src/Silex/Provider/TwigServiceProvider.php index 16e314c1a..d1744707b 100644 --- a/src/Silex/Provider/TwigServiceProvider.php +++ b/src/Silex/Provider/TwigServiceProvider.php @@ -106,8 +106,4 @@ public function register(Application $app) )); }); } - - public function boot(Application $app) - { - } } diff --git a/src/Silex/Provider/UrlGeneratorServiceProvider.php b/src/Silex/Provider/UrlGeneratorServiceProvider.php index 9eeab1276..9fb2f036f 100644 --- a/src/Silex/Provider/UrlGeneratorServiceProvider.php +++ b/src/Silex/Provider/UrlGeneratorServiceProvider.php @@ -30,8 +30,4 @@ public function register(Application $app) return new UrlGenerator($app['routes'], $app['request_context']); }); } - - public function boot(Application $app) - { - } } diff --git a/src/Silex/Provider/ValidatorServiceProvider.php b/src/Silex/Provider/ValidatorServiceProvider.php index a8f85749c..959b33134 100644 --- a/src/Silex/Provider/ValidatorServiceProvider.php +++ b/src/Silex/Provider/ValidatorServiceProvider.php @@ -58,8 +58,4 @@ public function register(Application $app) return array(); }); } - - public function boot(Application $app) - { - } }