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/Component/HttpKernel
Fabien Potencier de5790314d Merge branch '2.4'
* 2.4:
  [Debug] fixed tests
  ErrorHandlerTest: restore_error_handler() on assertion failure
  Fixed typo
  [validator] throw an exception if isn't an instance of ConstraintValidatorInterface.
  Reset the box model to content-box in the web debug toolbar
  [FrameworkBundle] Allowed "0" as a checkbox value in the php template.
  raising delta on stopwatch as travis really breaks with less than 35
  Switched to correct gender of "Token"
  bumped Symfony version to 2.4.1
  updated VERSION for 2.4.0
  updated CHANGELOG for 2.4.0
  fixed typos in several translations
  [HttpKernel] use static late binding when dumping out container

Conflicts:
	src/Symfony/Component/HttpKernel/Kernel.php
2013-12-12 17:07:18 +01:00
..
Bundle Merge branch '2.3' 2013-11-23 22:17:02 +01:00
CacheClearer fixed CS 2012-07-09 14:54:20 +02:00
CacheWarmer unify constructor initialization style throughout symfony 2013-11-11 19:40:07 +01:00
Config [HttpKernel] tweaked previous merge 2013-04-07 17:51:54 +02:00
Controller unify and fix callable phpdoc throughout symfony 2013-11-20 10:25:10 +01:00
DataCollector [HttpKernel] fixed regression introduced in 2.4 in the base DataCollector class. Added more unit tests coverage for the RequestDataCollector object. 2013-11-26 13:58:53 +01:00
Debug unify constructor initialization style throughout symfony 2013-11-11 19:40:07 +01:00
DependencyInjection bug #9168 [FrameworkBundle] made sure that the debug event dispatcher is used everywhere (fabpot) 2013-10-28 15:29:55 +01:00
Event Merge branch '2.3' 2013-09-19 11:47:34 +02:00
EventListener [HttpKernel] Fix profiler event-listener usage outside request stack context 2013-11-27 18:32:46 +01:00
Exception [Debug] added the component (closes #6828, closes #6834, closes #7330) 2013-04-07 18:19:05 +02:00
Fragment unify constructor initialization style throughout symfony 2013-11-11 19:40:07 +01:00
HttpCache unify constructor initialization style throughout symfony 2013-11-11 19:40:07 +01:00
Log Fixed the NullLogger to implement the HttpKernel interface again 2013-01-30 20:59:27 +01:00
Profiler unify missing parentheses 2013-11-14 15:30:56 +01:00
Tests [HttpKernel] Fix profiler event-listener usage outside request stack context 2013-11-27 18:32:46 +01:00
.gitignore Added missing files .gitignore 2013-07-21 14:12:18 +02:00
CHANGELOG.md moved logic for the session listeners into the HttpKernel component 2013-11-04 07:11:47 +01:00
Client.php Fix an issue when overriding Client::setServerParameters() and using the getContainer() method in it. 2013-11-25 13:34:16 +01:00
composer.json updated version to 2.5 2013-11-24 21:17:07 +01:00
HttpKernel.php moved RequestStack to HttpFoundation and removed RequestContext 2013-09-08 07:38:03 +02:00
HttpKernelInterface.php fixed CS 2012-07-09 14:54:20 +02:00
Kernel.php Merge branch '2.4' 2013-12-12 17:07:18 +01:00
KernelEvents.php [HttpKernel] renamed the kernel finished event 2013-09-07 21:43:50 +02:00
KernelInterface.php CS Fixes - Replaced "array of type" by "Type[]" in PHPDoc block 2012-11-19 13:58:52 +01:00
LICENSE updated license year 2013-01-04 17:59:43 +01:00
phpunit.xml.dist made usage of Composer autoloader for subtree-split unit tests 2012-11-09 14:10:06 +01:00
README.md updated the composer install command to reflect changes in Composer 2013-09-18 09:27:26 +02:00
TerminableInterface.php fixed CS 2012-07-09 14:54:20 +02:00
UriSigner.php Replace sha1 and md5 hashing with sha256 algorithm 2013-08-31 13:25:41 +02:00

HttpKernel Component

HttpKernel provides the building blocks to create flexible and fast HTTP-based frameworks.

HttpKernelInterface is the core interface of the Symfony2 full-stack framework:

interface HttpKernelInterface
{
    /**
     * Handles a Request to convert it to a Response.
     *
     * @param  Request $request A Request instance
     *
     * @return Response A Response instance
     */
    function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true);
}

It takes a Request as an input and should return a Response as an output. Using this interface makes your code compatible with all frameworks using the Symfony2 components. And this will give you many cool features for free.

Creating a framework based on the Symfony2 components is really easy. Here is a very simple, but fully-featured framework based on the Symfony2 components:

$routes = new RouteCollection();
$routes->add('hello', new Route('/hello', array('_controller' =>
    function (Request $request) {
        return new Response(sprintf("Hello %s", $request->get('name')));
    }
)));

$request = Request::createFromGlobals();

$context = new RequestContext();
$context->fromRequest($request);

$matcher = new UrlMatcher($routes, $context);

$dispatcher = new EventDispatcher();
$dispatcher->addSubscriber(new RouterListener($matcher));

$resolver = new ControllerResolver();

$kernel = new HttpKernel($dispatcher, $resolver);

$kernel->handle($request)->send();

This is all you need to create a flexible framework with the Symfony2 components.

Want to add an HTTP reverse proxy and benefit from HTTP caching and Edge Side Includes?

$kernel = new HttpKernel($dispatcher, $resolver);

$kernel = new HttpCache($kernel, new Store(__DIR__.'/cache'));

Want to functional test this small framework?

$client = new Client($kernel);
$crawler = $client->request('GET', '/hello/Fabien');

$this->assertEquals('Fabien', $crawler->filter('p > span')->text());

Want nice error pages instead of ugly PHP exceptions?

$dispatcher->addSubscriber(new ExceptionListener(function (Request $request) {
    $msg = 'Something went wrong! ('.$request->get('exception')->getMessage().')';

    return new Response($msg, 500);
}));

And that's why the simple looking HttpKernelInterface is so powerful. It gives you access to a lot of cool features, ready to be used out of the box, with no efforts.

Resources

You can run the unit tests with the following command:

$ cd path/to/Symfony/Component/HttpKernel/
$ composer.phar install
$ phpunit