* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Bundle\FrameworkBundle\Kernel; use Symfony\Component\Config\Loader\LoaderInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\Routing\RouteCollectionBuilder; /** * A Kernel that provides configuration hooks. * * @author Ryan Weaver * @author Fabien Potencier */ trait MicroKernelTrait { /** * Add or import routes into your application. * * $routes->import('config/routing.yml'); * $routes->add('/admin', 'AppBundle:Admin:dashboard', 'admin_dashboard'); * * @param RouteCollectionBuilder $routes */ abstract protected function configureRoutes(RouteCollectionBuilder $routes); /** * Configures the container. * * You can register extensions: * * $c->loadFromExtension('framework', array( * 'secret' => '%secret%' * )); * * Or services: * * $c->register('halloween', 'FooBundle\HalloweenProvider'); * * Or parameters: * * $c->setParameter('halloween', 'lot of fun'); * * @param ContainerBuilder $c * @param LoaderInterface $loader */ abstract protected function configureContainer(ContainerBuilder $c, LoaderInterface $loader); /** * {@inheritdoc} */ public function registerContainerConfiguration(LoaderInterface $loader) { $loader->load(function (ContainerBuilder $container) use ($loader) { $container->loadFromExtension('framework', array( 'router' => array( 'resource' => 'kernel:loadRoutes', 'type' => 'service', ), )); $this->configureContainer($container, $loader); $container->addObjectResource($this); }); } /** * @internal */ public function loadRoutes(LoaderInterface $loader) { $routes = new RouteCollectionBuilder($loader); $this->configureRoutes($routes); return $routes->build(); } }