This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
symfony/src/Symfony/Bundle/FrameworkBundle/Kernel/MicroKernelTrait.php

97 lines
2.7 KiB
PHP
Raw Normal View History

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;
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');
* $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(
'resource' => 'kernel::loadRoutes',
2015-09-29 09:12:10 +01:00
'type' => 'service',
),
));
if ($this instanceof EventSubscriberInterface) {
$container->register('kernel', static::class)
->setSynthetic(true)
->setPublic(true)
->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();
}
}