2015-09-29 09:12:10 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/*
|
|
|
|
* This file is part of the Symfony package.
|
|
|
|
*
|
|
|
|
* (c) Fabien Potencier <fabien@symfony.com>
|
|
|
|
*
|
|
|
|
* 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;
|
2017-08-06 19:00:10 +01:00
|
|
|
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
2015-09-29 09:12:10 +01:00
|
|
|
use Symfony\Component\Routing\RouteCollectionBuilder;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* A Kernel that provides configuration hooks.
|
|
|
|
*
|
|
|
|
* @author Ryan Weaver <ryan@knpuniversity.com>
|
|
|
|
* @author Fabien Potencier <fabien@symfony.com>
|
|
|
|
*/
|
|
|
|
trait MicroKernelTrait
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Add or import routes into your application.
|
|
|
|
*
|
|
|
|
* $routes->import('config/routing.yml');
|
2018-07-06 09:59:10 +01:00
|
|
|
* $routes->add('/admin', 'App\Controller\AdminController::dashboard', 'admin_dashboard');
|
2015-09-29 09:12:10 +01:00
|
|
|
*
|
|
|
|
* @param RouteCollectionBuilder $routes
|
|
|
|
*/
|
|
|
|
abstract protected function configureRoutes(RouteCollectionBuilder $routes);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Configures the container.
|
|
|
|
*
|
|
|
|
* You can register extensions:
|
|
|
|
*
|
2018-08-28 22:39:52 +01:00
|
|
|
* $c->loadFromExtension('framework', array(
|
|
|
|
* 'secret' => '%secret%'
|
|
|
|
* ));
|
2015-09-29 09:12:10 +01:00
|
|
|
*
|
|
|
|
* Or services:
|
|
|
|
*
|
2018-08-28 22:39:52 +01:00
|
|
|
* $c->register('halloween', 'FooBundle\HalloweenProvider');
|
2015-09-29 09:12:10 +01:00
|
|
|
*
|
|
|
|
* Or parameters:
|
|
|
|
*
|
2018-08-28 22:39:52 +01:00
|
|
|
* $c->setParameter('halloween', 'lot of fun');
|
2015-09-29 09:12:10 +01:00
|
|
|
*
|
|
|
|
* @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(
|
2018-02-08 02:17:50 +00:00
|
|
|
'resource' => 'kernel::loadRoutes',
|
2015-09-29 09:12:10 +01:00
|
|
|
'type' => 'service',
|
|
|
|
),
|
|
|
|
));
|
|
|
|
|
2017-08-06 19:00:10 +01:00
|
|
|
if ($this instanceof EventSubscriberInterface) {
|
|
|
|
$container->register('kernel', static::class)
|
|
|
|
->setSynthetic(true)
|
2017-09-17 10:49:41 +01:00
|
|
|
->setPublic(true)
|
2017-08-06 19:00:10 +01:00
|
|
|
->addTag('kernel.event_subscriber')
|
|
|
|
;
|
|
|
|
}
|
|
|
|
|
2015-09-29 09:12:10 +01:00
|
|
|
$this->configureContainer($container, $loader);
|
|
|
|
|
|
|
|
$container->addObjectResource($this);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @internal
|
|
|
|
*/
|
|
|
|
public function loadRoutes(LoaderInterface $loader)
|
|
|
|
{
|
|
|
|
$routes = new RouteCollectionBuilder($loader);
|
|
|
|
$this->configureRoutes($routes);
|
|
|
|
|
|
|
|
return $routes->build();
|
|
|
|
}
|
|
|
|
}
|