diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/WebExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/WebExtension.php
index 0868c8cb919d..5a6237f98f0f 100644
--- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/WebExtension.php
+++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/WebExtension.php
@@ -163,6 +163,21 @@ public function configLoad($config, ContainerBuilder $container)
$container->getDefinition('validator')->clearTags();
}
}
+
+ $container->setParameter('kernel.compiled_classes', array_merge($container->getParameter('kernel.compiled_classes'), array(
+ 'Symfony\\Components\\EventDispatcher\\Event',
+ 'Symfony\\Components\\HttpKernel\\ResponseListener',
+ 'Symfony\\Bundle\\FrameworkBundle\\Controller',
+
+ // routing
+ 'Symfony\\Components\\Routing\\RouterInterface',
+ 'Symfony\\Components\\Routing\\Router',
+ 'Symfony\\Components\\Routing\\Matcher\\UrlMatcherInterface',
+ 'Symfony\\Components\\Routing\\Matcher\\UrlMatcher',
+ 'Symfony\\Components\\Routing\\Generator\\UrlGeneratorInterface',
+ 'Symfony\\Components\\Routing\\Generator\\UrlGenerator',
+ 'Symfony\\Bundle\\FrameworkBundle\\RequestListener',
+ )));
}
/**
@@ -226,6 +241,20 @@ public function templatingLoad($config, ContainerBuilder $container)
$container->setDefinition('templating.loader', $container->getDefinition('templating.loader.cache'));
$container->setParameter('templating.loader.cache.path', $config['cache']);
}
+
+ // compilation
+ $container->setParameter('kernel.compiled_classes', array_merge($container->getParameter('kernel.compiled_classes'), array(
+ 'Symfony\\Components\\Templating\\Loader\\LoaderInterface',
+ 'Symfony\\Components\\Templating\\Loader\\Loader',
+ 'Symfony\\Components\\Templating\\Loader\\FilesystemLoader',
+ 'Symfony\\Components\\Templating\\Engine',
+ 'Symfony\\Components\\Templating\\Renderer\\RendererInterface',
+ 'Symfony\\Components\\Templating\\Renderer\\Renderer',
+ 'Symfony\\Components\\Templating\\Renderer\\PhpRenderer',
+ 'Symfony\\Components\\Templating\\Storage\\Storage',
+ 'Symfony\\Components\\Templating\\Storage\\FileStorage',
+ 'Symfony\\Bundle\\FrameworkBundle\\Templating\\Engine',
+ )));
}
/**
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 e3d8e35b41e5..c0405fb0c0a7 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
@@ -1,7 +1,5 @@
setParameter('kernel.include_core_classes', false);
-
$container->loadFromExtension('kernel', 'config', array(
'charset' => 'UTF-8',
'error_handler' => null,
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 c5ba222f0079..14f976ff8a40 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
@@ -11,10 +11,6 @@
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/swiftmailer http://www.symfony-project.org/schema/dic/swiftmailer/swiftmailer-1.0.xsd">
-
- false
-
-
getWebExtension();
+ $container = $this->getContainer();
+ $loader = new WebExtension();
$loader->configLoad(array(), $container);
$this->assertEquals('Symfony\\Bundle\\FrameworkBundle\\RequestListener', $container->getParameter('request_listener.class'), '->webLoad() loads the web.xml file if not already loaded');
$container = $this->getContainer();
- $loader = $this->getWebExtension();
+ $loader = new WebExtension();
$loader->configLoad(array('profiler' => true), $container);
$this->assertEquals('Symfony\\Bundle\\FrameworkBundle\\Profiler', $container->getParameter('profiler.class'), '->configLoad() loads the collectors.xml file if not already loaded');
@@ -40,7 +40,7 @@ public function testConfigLoad()
public function testTemplatingLoad()
{
$container = $this->getContainer();
- $loader = $this->getWebExtension();
+ $loader = new WebExtension();
$loader->templatingLoad(array(), $container);
$this->assertEquals('Symfony\\Bundle\\FrameworkBundle\\Templating\\Engine', $container->getParameter('templating.engine.class'), '->templatingLoad() loads the templating.xml file if not already loaded');
@@ -49,7 +49,7 @@ public function testTemplatingLoad()
public function testValidationLoad()
{
$container = $this->getContainer();
- $loader = $this->getWebExtension();
+ $loader = new WebExtension();
$loader->configLoad(array('validation' => array('enabled' => true)), $container);
$this->assertEquals('Symfony\Components\Validator\Validator', $container->getParameter('validator.class'), '->validationLoad() loads the validation.xml file if not already loaded');
@@ -59,20 +59,17 @@ public function testValidationLoad()
$this->assertTrue($container->hasDefinition('validator.mapping.loader.annotation_loader'), '->validationLoad() loads the annotations service');
}
- public function getWebExtension() {
- return new WebExtension(array(
- 'Symfony\\Framework' => __DIR__ . '/../../../Framework',
- ), array(
- 'FrameworkBundle',
- ));
- }
-
protected function getContainer()
{
return new ContainerBuilder(new ParameterBag(array(
- 'kernel.bundle_dirs' => array(),
- 'kernel.bundles' => array(),
- 'kernel.debug' => false,
+ 'kernel.bundle_dirs' => array(
+ 'Symfony\\Framework' => __DIR__ . '/../../../Framework',
+ ),
+ 'kernel.bundles' => array(
+ 'FrameworkBundle',
+ ),
+ 'kernel.debug' => false,
+ 'kernel.compiled_classes' => array(),
)));
}
}
diff --git a/src/Symfony/Framework/ClassCollectionLoader.php b/src/Symfony/Framework/ClassCollectionLoader.php
index 635af855f6c6..d4d36a1298b6 100644
--- a/src/Symfony/Framework/ClassCollectionLoader.php
+++ b/src/Symfony/Framework/ClassCollectionLoader.php
@@ -23,6 +23,8 @@ class ClassCollectionLoader
*/
static public function load($classes, $cacheDir, $name, $autoReload)
{
+ $classes = array_unique($classes);
+
$cache = $cacheDir.'/'.$name.'.php';
// auto-reload
diff --git a/src/Symfony/Framework/DependencyInjection/KernelExtension.php b/src/Symfony/Framework/DependencyInjection/KernelExtension.php
index b03b79b6651c..6613201b4a15 100644
--- a/src/Symfony/Framework/DependencyInjection/KernelExtension.php
+++ b/src/Symfony/Framework/DependencyInjection/KernelExtension.php
@@ -32,7 +32,6 @@ 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);
}
/**
@@ -94,40 +93,6 @@ public function configLoad($config, ContainerBuilder $container)
$container->setParameter('kernel.charset', $config['charset']);
}
- if (!array_key_exists('compilation', $config)) {
- $classes = array(
- 'Symfony\\Components\\Routing\\RouterInterface',
- 'Symfony\\Components\\Routing\\Router',
- 'Symfony\\Components\\EventDispatcher\\Event',
- 'Symfony\\Components\\Routing\\Matcher\\UrlMatcherInterface',
- 'Symfony\\Components\\Routing\\Matcher\\UrlMatcher',
- 'Symfony\\Components\\HttpKernel\\HttpKernel',
- 'Symfony\\Components\\HttpFoundation\\Request',
- 'Symfony\\Components\\HttpFoundation\\Response',
- 'Symfony\\Components\\HttpKernel\\ResponseListener',
- 'Symfony\\Components\\Templating\\Loader\\LoaderInterface',
- 'Symfony\\Components\\Templating\\Loader\\Loader',
- 'Symfony\\Components\\Templating\\Loader\\FilesystemLoader',
- 'Symfony\\Components\\Templating\\Engine',
- 'Symfony\\Components\\Templating\\Renderer\\RendererInterface',
- 'Symfony\\Components\\Templating\\Renderer\\Renderer',
- 'Symfony\\Components\\Templating\\Renderer\\PhpRenderer',
- 'Symfony\\Components\\Templating\\Storage\\Storage',
- 'Symfony\\Components\\Templating\\Storage\\FileStorage',
- 'Symfony\\Bundle\\FrameworkBundle\\RequestListener',
- 'Symfony\\Bundle\\FrameworkBundle\\Controller',
- 'Symfony\\Bundle\\FrameworkBundle\\Templating\\Engine',
- );
- } else {
- $classes = array();
- foreach (explode("\n", $config['compilation']) as $class) {
- if ($class) {
- $classes[] = trim($class);
- }
- }
- }
- $container->setParameter('kernel.compiled_classes', $classes);
-
if (array_key_exists('error_handler', $config)) {
if (false === $config['error_handler']) {
$container->getDefinition('error_handler')->setMethodCalls(array());
diff --git a/src/Symfony/Framework/Kernel.php b/src/Symfony/Framework/Kernel.php
index 6fcaa862b302..ddc98cc331f9 100644
--- a/src/Symfony/Framework/Kernel.php
+++ b/src/Symfony/Framework/Kernel.php
@@ -17,6 +17,7 @@
use Symfony\Components\DependencyInjection\Loader\ClosureLoader;
use Symfony\Components\HttpFoundation\Request;
use Symfony\Components\HttpKernel\HttpKernelInterface;
+use Symfony\Framework\ClassCollectionLoader;
/*
* This file is part of the Symfony package.
@@ -35,6 +36,8 @@
*/
abstract class Kernel implements HttpKernelInterface, \Serializable
{
+ static protected $loaded;
+
protected $bundles;
protected $bundleDirs;
protected $container;
@@ -123,6 +126,14 @@ public function boot()
$this->bundleDirs = $this->registerBundleDirs();
$this->container = $this->initializeContainer();
+ // load core classes
+ ClassCollectionLoader::load(
+ $this->container->getParameter('kernel.compiled_classes'),
+ $this->container->getParameter('kernel.cache_dir'),
+ 'classes',
+ $this->container->getParameter('kernel.debug')
+ );
+
foreach ($this->bundles as $bundle) {
$bundle->setContainer($this->container);
$bundle->boot();
@@ -314,15 +325,16 @@ public function getKernelParameters()
return array_merge(
array(
- 'kernel.root_dir' => $this->rootDir,
- 'kernel.environment' => $this->environment,
- 'kernel.debug' => $this->debug,
- 'kernel.name' => $this->name,
- 'kernel.cache_dir' => $this->getCacheDir(),
- 'kernel.logs_dir' => $this->getLogDir(),
- 'kernel.bundle_dirs' => $this->bundleDirs,
- 'kernel.bundles' => $bundles,
- 'kernel.charset' => 'UTF-8',
+ 'kernel.root_dir' => $this->rootDir,
+ 'kernel.environment' => $this->environment,
+ 'kernel.debug' => $this->debug,
+ 'kernel.name' => $this->name,
+ 'kernel.cache_dir' => $this->getCacheDir(),
+ 'kernel.logs_dir' => $this->getLogDir(),
+ 'kernel.bundle_dirs' => $this->bundleDirs,
+ 'kernel.bundles' => $bundles,
+ 'kernel.charset' => 'UTF-8',
+ 'kernel.compiled_classes' => array(),
),
$this->getEnvParameters()
);
diff --git a/src/Symfony/Framework/KernelBundle.php b/src/Symfony/Framework/KernelBundle.php
index c9aa4d9e6980..f9e9a23a34ee 100644
--- a/src/Symfony/Framework/KernelBundle.php
+++ b/src/Symfony/Framework/KernelBundle.php
@@ -29,10 +29,5 @@ public function boot()
if ($this->container->has('error_handler')) {
$this->container['error_handler'];
}
-
- // load core classes
- if ($this->container->getParameterBag()->has('kernel.include_core_classes') && $this->container->getParameter('kernel.include_core_classes')) {
- ClassCollectionLoader::load($this->container->getParameter('kernel.compiled_classes'), $this->container->getParameter('kernel.cache_dir'), 'classes', $this->container->getParameter('kernel.debug'));
- }
}
}
diff --git a/src/Symfony/Framework/Resources/config/services.xml b/src/Symfony/Framework/Resources/config/services.xml
index 25ca51eb2215..8e23a44fd6e1 100644
--- a/src/Symfony/Framework/Resources/config/services.xml
+++ b/src/Symfony/Framework/Resources/config/services.xml
@@ -12,7 +12,6 @@
Symfony\Framework\Debug\ErrorHandler
null
true
- true
diff --git a/src/Symfony/Framework/bootstrap.php b/src/Symfony/Framework/bootstrap.php
index 82735a77e9a4..c321f96a31c2 100644
--- a/src/Symfony/Framework/bootstrap.php
+++ b/src/Symfony/Framework/bootstrap.php
@@ -69,9 +69,7 @@ public function setContainer(ContainerInterface $container); }
class KernelBundle extends Bundle {
public function boot() {
if ($this->container->has('error_handler')) {
- $this->container['error_handler']; }
- if ($this->container->getParameterBag()->has('kernel.include_core_classes') && $this->container->getParameter('kernel.include_core_classes')) {
- ClassCollectionLoader::load($this->container->getParameter('kernel.compiled_classes'), $this->container->getParameter('kernel.cache_dir'), 'classes', $this->container->getParameter('kernel.debug')); } } }
+ $this->container['error_handler']; } } }
namespace Symfony\Framework\DependencyInjection;
use Symfony\Components\DependencyInjection\Extension\Extension;
use Symfony\Components\DependencyInjection\Loader\XmlFileLoader;
@@ -79,8 +77,7 @@ public function boot() {
class KernelExtension extends Extension {
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); }
+ $loader->load('test.xml'); }
public function sessionLoad($config, ContainerBuilder $container) {
if (!$container->hasDefinition('session')) {
$loader = new XmlFileLoader($container, array(__DIR__.'/../Resources/config', __DIR__.'/Resources/config'));
@@ -106,35 +103,6 @@ public function configLoad($config, ContainerBuilder $container) {
$container->setDefinition('event_dispatcher', $container->findDefinition('debug.event_dispatcher')); } }
if (isset($config['charset'])) {
$container->setParameter('kernel.charset', $config['charset']); }
- if (!array_key_exists('compilation', $config)) {
- $classes = array(
- 'Symfony\\Components\\Routing\\RouterInterface',
- 'Symfony\\Components\\Routing\\Router',
- 'Symfony\\Components\\EventDispatcher\\Event',
- 'Symfony\\Components\\Routing\\Matcher\\UrlMatcherInterface',
- 'Symfony\\Components\\Routing\\Matcher\\UrlMatcher',
- 'Symfony\\Components\\HttpKernel\\HttpKernel',
- 'Symfony\\Components\\HttpFoundation\\Request',
- 'Symfony\\Components\\HttpFoundation\\Response',
- 'Symfony\\Components\\HttpKernel\\ResponseListener',
- 'Symfony\\Components\\Templating\\Loader\\LoaderInterface',
- 'Symfony\\Components\\Templating\\Loader\\Loader',
- 'Symfony\\Components\\Templating\\Loader\\FilesystemLoader',
- 'Symfony\\Components\\Templating\\Engine',
- 'Symfony\\Components\\Templating\\Renderer\\RendererInterface',
- 'Symfony\\Components\\Templating\\Renderer\\Renderer',
- 'Symfony\\Components\\Templating\\Renderer\\PhpRenderer',
- 'Symfony\\Components\\Templating\\Storage\\Storage',
- 'Symfony\\Components\\Templating\\Storage\\FileStorage',
- 'Symfony\\Bundle\\FrameworkBundle\\RequestListener',
- 'Symfony\\Bundle\\FrameworkBundle\\Controller',
- 'Symfony\\Bundle\\FrameworkBundle\\Templating\\Engine',
- ); } else {
- $classes = array();
- foreach (explode("\n", $config['compilation']) as $class) {
- if ($class) {
- $classes[] = trim($class); } } }
- $container->setParameter('kernel.compiled_classes', $classes);
if (array_key_exists('error_handler', $config)) {
if (false === $config['error_handler']) {
$container->getDefinition('error_handler')->setMethodCalls(array()); } else {
@@ -171,6 +139,7 @@ public function handle($level, $message, $file, $line, $context) {
namespace Symfony\Framework;
class ClassCollectionLoader {
static public function load($classes, $cacheDir, $name, $autoReload) {
+ $classes = array_unique($classes);
$cache = $cacheDir.'/'.$name.'.php';
$reload = false;
if ($autoReload) {