Skip to content

Commit

Permalink
moved KernelBundle logic to KernelExtension, and made test.xml decoup…
Browse files Browse the repository at this point in the history
…led from the error handler

The error_handler_level parameter (from kernel.config) has been renamed to error_handler (false to disable the error handler,
null to catch errors from error_reporting(), and a number to catch more/less errors than error_reporting())
  • Loading branch information
fabpot committed Aug 10, 2010
1 parent 9452437 commit 2a8a9cc
Show file tree
Hide file tree
Showing 12 changed files with 52 additions and 89 deletions.
Expand Up @@ -3,13 +3,8 @@
$container->setParameter('kernel.include_core_classes', false);

$container->loadFromExtension('kernel', 'config', array(
'charset' => 'UTF-8',
'error_handler_level' => null,
));

$container->loadFromExtension('kernel', 'config', array(
'charset' => 'UTF-8',
'error_handler_level' => null,
'charset' => 'UTF-8',
'error_handler' => null,
));

$container->loadFromExtension('web', 'config', array(
Expand Down
Expand Up @@ -2,6 +2,10 @@

$loader->import('config_dev.php');

$container->loadFromExtension('kernel', 'config', array(
'error_handler' => false,
));

$container->loadFromExtension('web', 'config', array(
'toolbar' => false,
));
Expand Down
Expand Up @@ -4,13 +4,11 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:swift="http://www.symfony-project.org/schema/dic/swiftmailer"
xmlns:doctrine="http://www.symfony-project.org/schema/dic/doctrine"
xmlns:symfony="http://www.symfony-project.org/schema/dic/symfony"
xmlns:kernel="http://www.symfony-project.org/schema/dic/symfony/kernel"
xmlns:zend="http://www.symfony-project.org/schema/dic/zend"
xmlns:web="http://www.symfony-project.org/schema/dic/symfony"
xsi:schemaLocation="http://www.symfony-project.org/schema/dic/services http://www.symfony-project.org/schema/dic/services/services-1.0.xsd
http://www.symfony-project.org/schema/dic/doctrine http://www.symfony-project.org/schema/dic/doctrine/doctrine-1.0.xsd
http://www.symfony-project.org/schema/dic/symfony http://www.symfony-project.org/schema/dic/symfony/symfony-1.0.xsd
http://www.symfony-project.org/schema/dic/swiftmailer http://www.symfony-project.org/schema/dic/swiftmailer/swiftmailer-1.0.xsd">

<parameters>
Expand All @@ -19,7 +17,7 @@

<kernel:config
charset="UTF-8"
error_handler_level="null"
error_handler="null"
/>

<web:config>
Expand Down
Expand Up @@ -12,6 +12,10 @@
<import resource="config_dev.xml" />
</imports>

<kernel:config
error_handler="false"
/>

<web:config
toolbar="false"
/>
Expand Down
Expand Up @@ -2,8 +2,8 @@ parameters:
kernel.include_core_classes: false

kernel.config:
charset: UTF-8
error_handler_level: null
charset: UTF-8
error_handler: null

web.config:
router: { resource: "%kernel.root_dir%/config/routing.yml" }
Expand Down
@@ -1,6 +1,9 @@
imports:
- { resource: config_dev.yml }

kernel.config:
error_handler: false

zend.logger:
priority: debug

Expand Down
6 changes: 2 additions & 4 deletions src/Symfony/Framework/Debug/ErrorHandler.php
Expand Up @@ -40,11 +40,9 @@ public function __construct($level = null)
$this->level = null === $level ? error_reporting() : $level;
}

public function register($enable=true)
public function register()
{
if($enable) {
set_error_handler(array($this, 'handle'));
}
set_error_handler(array($this, 'handle'));
}

/**
Expand Down
41 changes: 30 additions & 11 deletions src/Symfony/Framework/DependencyInjection/KernelExtension.php
Expand Up @@ -22,22 +22,24 @@
*/
class KernelExtension extends Extension
{
/**
* Loads the test configuration.
*
* @param array $config A configuration array
* @param ContainerBuilder $container A ContainerBuilder instance
*/
public function testLoad($config, ContainerBuilder $container)
{
$loader = new XmlFileLoader($container, array(__DIR__.'/../Resources/config', __DIR__.'/Resources/config'));
$loader->load('test.xml');
$container->setParameter('kernel.include_core_classes', false);

return $container;
}

/**
* Loads the session configuration.
*
* @param array $config A configuration array
* @param array $config A configuration array
* @param ContainerBuilder $container A ContainerBuilder instance
*
* @return ContainerBuilder A ContainerBuilder instance
*/
public function sessionLoad($config, ContainerBuilder $container)
{
Expand Down Expand Up @@ -68,12 +70,26 @@ public function sessionLoad($config, ContainerBuilder $container)

$container->setParameter('session.session', 'session.session.'.strtolower($class));
}

return $container;
}

/**
* Loads the config configuration.
*
* @param array $config A configuration array
* @param ContainerBuilder $container A ContainerBuilder instance
*/
public function configLoad($config, ContainerBuilder $container)
{
if (!$container->hasDefinition('event_dispatcher')) {
$loader = new XmlFileLoader($container, array(__DIR__.'/../Resources/config', __DIR__.'/Resources/config'));
$loader->load('services.xml');

if ($container->getParameter('kernel.debug')) {
$loader->load('debug.xml');
$container->setDefinition('event_dispatcher', $container->findDefinition('debug.event_dispatcher'));
}
}

if (isset($config['charset'])) {
$container->setParameter('kernel.charset', $config['charset']);
}
Expand Down Expand Up @@ -112,11 +128,14 @@ public function configLoad($config, ContainerBuilder $container)
}
$container->setParameter('kernel.compiled_classes', $classes);

if (array_key_exists('error_handler_level', $config)) {
$container->setParameter('error_handler.level', $config['error_handler_level']);
if (array_key_exists('error_handler', $config)) {
if (false === $config['error_handler']) {
$container->getDefinition('error_handler')->setMethodCalls(array());
} else {
$container->getDefinition('error_handler')->addMethodCall('register', array());
$container->setParameter('error_handler.level', $config['error_handler']);
}
}

return $container;
}

/**
Expand Down
18 changes: 4 additions & 14 deletions src/Symfony/Framework/KernelBundle.php
Expand Up @@ -37,18 +37,6 @@ class KernelBundle extends Bundle
public function buildContainer(ParameterBagInterface $parameterBag)
{
ContainerBuilder::registerExtension(new KernelExtension());

$container = new ContainerBuilder();

$loader = new XmlFileLoader($container, array(__DIR__.'/../Resources/config', __DIR__.'/Resources/config'));
$loader->load('services.xml');

if ($parameterBag->get('kernel.debug')) {
$loader->load('debug.xml');
$container->setDefinition('event_dispatcher', $container->findDefinition('debug.event_dispatcher'));
}

return $container;
}

/**
Expand All @@ -58,10 +46,12 @@ public function buildContainer(ParameterBagInterface $parameterBag)
*/
public function boot(ContainerInterface $container)
{
$container->getErrorHandlerService();
if ($container->has('error_handler')) {
$container['error_handler'];
}

// load core classes
if ($container->getParameter('kernel.include_core_classes')) {
if ($container->getParameterBag()->has('kernel.include_core_classes') && $container->getParameter('kernel.include_core_classes')) {
ClassCollectionLoader::load($container->getParameter('kernel.compiled_classes'), $container->getParameter('kernel.cache_dir'), 'classes', $container->getParameter('kernel.debug'));
}
}
Expand Down
3 changes: 0 additions & 3 deletions src/Symfony/Framework/Resources/config/services.xml
Expand Up @@ -22,9 +22,6 @@

<service id="error_handler" class="%error_handler.class%">
<argument>%error_handler.level%</argument>
<call method="register">
<argument>%error_handler.enable%</argument>
</call>
</service>

<service id="http_kernel" class="%http_kernel.class%">
Expand Down
1 change: 0 additions & 1 deletion src/Symfony/Framework/Resources/config/test.xml
Expand Up @@ -9,7 +9,6 @@
<parameter key="test.client.parameters" type="collection"></parameter>
<parameter key="test.client.history.class">Symfony\Components\BrowserKit\History</parameter>
<parameter key="test.client.cookiejar.class">Symfony\Components\BrowserKit\CookieJar</parameter>
<parameter key="error_handler.enable">false</parameter>
</parameters>

<services>
Expand Down
44 changes: 0 additions & 44 deletions tests/Symfony/Tests/Framework/Debug/ErrorHandlerTest.php

This file was deleted.

0 comments on commit 2a8a9cc

Please sign in to comment.