diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/skeleton/application/php/config/config.php b/src/Symfony/Bundle/FrameworkBundle/Resources/skeleton/application/php/config/config.php index d8b60a76c5..e3d8e35b41 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/skeleton/application/php/config/config.php +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/skeleton/application/php/config/config.php @@ -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( diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/skeleton/application/php/config/config_test.php b/src/Symfony/Bundle/FrameworkBundle/Resources/skeleton/application/php/config/config_test.php index f07872a135..67d322a4a8 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/skeleton/application/php/config/config_test.php +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/skeleton/application/php/config/config_test.php @@ -2,6 +2,10 @@ $loader->import('config_dev.php'); +$container->loadFromExtension('kernel', 'config', array( + 'error_handler' => false, +)); + $container->loadFromExtension('web', 'config', array( 'toolbar' => false, )); diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/skeleton/application/xml/config/config.xml b/src/Symfony/Bundle/FrameworkBundle/Resources/skeleton/application/xml/config/config.xml index b27ccf3100..c5ba222f00 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/skeleton/application/xml/config/config.xml +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/skeleton/application/xml/config/config.xml @@ -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"> @@ -19,7 +17,7 @@ diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/skeleton/application/xml/config/config_test.xml b/src/Symfony/Bundle/FrameworkBundle/Resources/skeleton/application/xml/config/config_test.xml index ca030166a2..f73a43ef39 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/skeleton/application/xml/config/config_test.xml +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/skeleton/application/xml/config/config_test.xml @@ -12,6 +12,10 @@ + + diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/skeleton/application/yml/config/config.yml b/src/Symfony/Bundle/FrameworkBundle/Resources/skeleton/application/yml/config/config.yml index 2208ccc44e..d528c41f84 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/skeleton/application/yml/config/config.yml +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/skeleton/application/yml/config/config.yml @@ -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" } diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/skeleton/application/yml/config/config_test.yml b/src/Symfony/Bundle/FrameworkBundle/Resources/skeleton/application/yml/config/config_test.yml index f83bc41290..af1d33048b 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/skeleton/application/yml/config/config_test.yml +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/skeleton/application/yml/config/config_test.yml @@ -1,6 +1,9 @@ imports: - { resource: config_dev.yml } +kernel.config: + error_handler: false + zend.logger: priority: debug diff --git a/src/Symfony/Framework/Debug/ErrorHandler.php b/src/Symfony/Framework/Debug/ErrorHandler.php index bcd3063c51..682510a9ca 100644 --- a/src/Symfony/Framework/Debug/ErrorHandler.php +++ b/src/Symfony/Framework/Debug/ErrorHandler.php @@ -40,11 +40,9 @@ class ErrorHandler $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')); } /** diff --git a/src/Symfony/Framework/DependencyInjection/KernelExtension.php b/src/Symfony/Framework/DependencyInjection/KernelExtension.php index 138fa65c93..b03b79b665 100644 --- a/src/Symfony/Framework/DependencyInjection/KernelExtension.php +++ b/src/Symfony/Framework/DependencyInjection/KernelExtension.php @@ -22,22 +22,24 @@ use Symfony\Components\DependencyInjection\ContainerBuilder; */ 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) { @@ -68,12 +70,26 @@ class KernelExtension extends Extension $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']); } @@ -112,11 +128,14 @@ class KernelExtension extends Extension } $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; } /** diff --git a/src/Symfony/Framework/KernelBundle.php b/src/Symfony/Framework/KernelBundle.php index fac326aa2e..febcec02cc 100644 --- a/src/Symfony/Framework/KernelBundle.php +++ b/src/Symfony/Framework/KernelBundle.php @@ -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; } /** @@ -58,10 +46,12 @@ class KernelBundle extends Bundle */ 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')); } } diff --git a/src/Symfony/Framework/Resources/config/services.xml b/src/Symfony/Framework/Resources/config/services.xml index 230d1afe00..25ca51eb22 100644 --- a/src/Symfony/Framework/Resources/config/services.xml +++ b/src/Symfony/Framework/Resources/config/services.xml @@ -22,9 +22,6 @@ %error_handler.level% - - %error_handler.enable% - diff --git a/src/Symfony/Framework/Resources/config/test.xml b/src/Symfony/Framework/Resources/config/test.xml index 9de3f282e2..ff203bc630 100644 --- a/src/Symfony/Framework/Resources/config/test.xml +++ b/src/Symfony/Framework/Resources/config/test.xml @@ -9,7 +9,6 @@ Symfony\Components\BrowserKit\History Symfony\Components\BrowserKit\CookieJar - false diff --git a/tests/Symfony/Tests/Framework/Debug/ErrorHandlerTest.php b/tests/Symfony/Tests/Framework/Debug/ErrorHandlerTest.php deleted file mode 100644 index 3540b9400b..0000000000 --- a/tests/Symfony/Tests/Framework/Debug/ErrorHandlerTest.php +++ /dev/null @@ -1,44 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Tests\Framework\Debug; - -use Symfony\Framework\Debug\ErrorHandler; - -class ErrorHandlerTest extends \PHPUnit_Framework_TestCase -{ - /** - * @covers Symfony\Framework\Debug\ErrorHandler::register - */ - public function testRegister() - { - $fakeHandler = function($errno, $errstr) - { - die('Fake error handler triggered'); - }; - - $oldHandler = set_error_handler($fakeHandler); - restore_error_handler(); - - $handler = new ErrorHandler(); - $handler->register(false); - $newHandler = set_error_handler($fakeHandler); - restore_error_handler(); - $this->assertEquals($oldHandler, $newHandler); - - $handler = new ErrorHandler(); - $handler->register(true); - $newHandler = set_error_handler($fakeHandler); - restore_error_handler(); - $this->assertNotEquals($oldHandler, $newHandler); - restore_error_handler(); - } -}