feature #28809 [HttpKernel] Deprecate the Kernel name (fabpot)
This PR was merged into the 4.2-dev branch.
Discussion
----------
[HttpKernel] Deprecate the Kernel name
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | no
| New feature? | yes
| BC breaks? | no <!-- see https://symfony.com/bc -->
| Deprecations? | yes <!-- don't forget to update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tests pass? | yes <!-- please add some, will be required by reviewers -->
| Fixed tickets | #26904
| License | MIT
| Doc PR | n/a
<!--
Write a short README entry for your feature/bugfix here (replace this comment block.)
This will help people understand your PR and can be used as a start of the Doc PR.
Additionally:
- Bug fixes must be submitted against the lowest branch where they apply
(lowest branches are regularly merged to upper ones so they get the fixes too).
- Features and deprecations must be submitted against the master branch.
-->
Commits
-------
98ff750ee1
[HttpKernel] deprecated the Kernel name
This commit is contained in:
commit
5fda7e2fb1
@ -367,7 +367,7 @@ abstract class AbstractDoctrineExtension extends Extension
|
||||
} else {
|
||||
$seed = '_'.$container->getParameter('kernel.root_dir');
|
||||
}
|
||||
$seed .= '.'.$container->getParameter('kernel.name').'.'.$container->getParameter('kernel.environment').'.'.$container->getParameter('kernel.debug');
|
||||
$seed .= '.'.$container->getParameter('kernel.container_class').'.'.$container->getParameter('kernel.environment').'.'.$container->getParameter('kernel.debug');
|
||||
$namespace = 'sf_'.$this->getMappingResourceExtension().'_'.$objectManagerName.'_'.ContainerBuilder::hash($seed);
|
||||
|
||||
$cacheDriver['namespace'] = $namespace;
|
||||
|
@ -271,7 +271,7 @@ class DoctrineExtensionTest extends TestCase
|
||||
'kernel.cache_dir' => __DIR__,
|
||||
'kernel.debug' => false,
|
||||
'kernel.environment' => 'test',
|
||||
'kernel.name' => 'kernel',
|
||||
'kernel.container_class' => 'kernel',
|
||||
'kernel.root_dir' => __DIR__,
|
||||
), $data)));
|
||||
}
|
||||
|
@ -71,7 +71,6 @@ EOT
|
||||
array('<info>Kernel</>'),
|
||||
new TableSeparator(),
|
||||
array('Type', \get_class($kernel)),
|
||||
array('Name', $kernel->getName()),
|
||||
array('Environment', $kernel->getEnvironment()),
|
||||
array('Debug', $kernel->isDebug() ? 'true' : 'false'),
|
||||
array('Charset', $kernel->getCharset()),
|
||||
|
@ -148,7 +148,7 @@ class Application extends BaseApplication
|
||||
*/
|
||||
public function getLongVersion()
|
||||
{
|
||||
return parent::getLongVersion().sprintf(' (kernel: <comment>%s</>, env: <comment>%s</>, debug: <comment>%s</>)', $this->kernel->getName(), $this->kernel->getEnvironment(), $this->kernel->isDebug() ? 'true' : 'false');
|
||||
return parent::getLongVersion().sprintf(' (env: <comment>%s</>, debug: <comment>%s</>)', $this->kernel->getEnvironment(), $this->kernel->isDebug() ? 'true' : 'false');
|
||||
}
|
||||
|
||||
public function add(Command $command)
|
||||
|
@ -30,7 +30,7 @@ class CachePoolClearerPassTest extends TestCase
|
||||
{
|
||||
$container = new ContainerBuilder();
|
||||
$container->setParameter('kernel.debug', false);
|
||||
$container->setParameter('kernel.name', 'app');
|
||||
$container->setParameter('kernel.container_class', 'app');
|
||||
$container->setParameter('kernel.environment', 'prod');
|
||||
$container->setParameter('kernel.root_dir', 'foo');
|
||||
|
||||
|
@ -35,7 +35,7 @@ class CachePoolPassTest extends TestCase
|
||||
{
|
||||
$container = new ContainerBuilder();
|
||||
$container->setParameter('kernel.debug', false);
|
||||
$container->setParameter('kernel.name', 'app');
|
||||
$container->setParameter('kernel.container_class', 'app');
|
||||
$container->setParameter('kernel.environment', 'prod');
|
||||
$container->setParameter('kernel.root_dir', 'foo');
|
||||
$adapter = new Definition();
|
||||
@ -57,7 +57,7 @@ class CachePoolPassTest extends TestCase
|
||||
{
|
||||
$container = new ContainerBuilder();
|
||||
$container->setParameter('kernel.environment', 'prod');
|
||||
$container->setParameter('kernel.name', 'app');
|
||||
$container->setParameter('kernel.container_class', 'app');
|
||||
$container->setParameter('kernel.root_dir', 'foo');
|
||||
|
||||
$container->register('cache.adapter.array', ArrayAdapter::class)->addArgument(0);
|
||||
@ -75,7 +75,7 @@ class CachePoolPassTest extends TestCase
|
||||
{
|
||||
$container = new ContainerBuilder();
|
||||
$container->setParameter('kernel.debug', false);
|
||||
$container->setParameter('kernel.name', 'app');
|
||||
$container->setParameter('kernel.container_class', 'app');
|
||||
$container->setParameter('kernel.environment', 'prod');
|
||||
$container->setParameter('cache.prefix.seed', 'foo');
|
||||
$cachePool = new Definition();
|
||||
@ -100,7 +100,7 @@ class CachePoolPassTest extends TestCase
|
||||
{
|
||||
$container = new ContainerBuilder();
|
||||
$container->setParameter('kernel.debug', false);
|
||||
$container->setParameter('kernel.name', 'app');
|
||||
$container->setParameter('kernel.container_class', 'app');
|
||||
$container->setParameter('kernel.environment', 'prod');
|
||||
$container->setParameter('cache.prefix.seed', 'foo');
|
||||
$cachePool = new Definition();
|
||||
@ -126,7 +126,7 @@ class CachePoolPassTest extends TestCase
|
||||
{
|
||||
$container = new ContainerBuilder();
|
||||
$container->setParameter('kernel.debug', false);
|
||||
$container->setParameter('kernel.name', 'app');
|
||||
$container->setParameter('kernel.container_class', 'app');
|
||||
$container->setParameter('kernel.environment', 'prod');
|
||||
$container->setParameter('kernel.root_dir', 'foo');
|
||||
$adapter = new Definition();
|
||||
|
@ -46,13 +46,9 @@ class AppKernel extends Kernel
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getName()
|
||||
public function getContainerClass()
|
||||
{
|
||||
if (null === $this->name) {
|
||||
$this->name = parent::getName().substr(md5($this->rootConfig), -16);
|
||||
}
|
||||
|
||||
return $this->name;
|
||||
return parent::getContainerClass().substr(md5($this->rootConfig), -16);
|
||||
}
|
||||
|
||||
public function registerBundles()
|
||||
|
@ -50,13 +50,6 @@
|
||||
</span>
|
||||
</div>
|
||||
|
||||
{% if 'n/a' is not same as(collector.appname) %}
|
||||
<div class="sf-toolbar-info-piece">
|
||||
<b>Kernel name</b>
|
||||
<span>{{ collector.appname }}</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if 'n/a' is not same as(collector.env) %}
|
||||
<div class="sf-toolbar-info-piece">
|
||||
<b>Environment</b>
|
||||
|
@ -52,7 +52,7 @@ class CachePoolPass implements CompilerPassInterface
|
||||
} else {
|
||||
$seed = '_'.$container->getParameter('kernel.root_dir');
|
||||
}
|
||||
$seed .= '.'.$container->getParameter('kernel.name').'.'.$container->getParameter('kernel.environment');
|
||||
$seed .= '.'.$container->getParameter('kernel.container_class').'.'.$container->getParameter('kernel.environment');
|
||||
|
||||
$pools = array();
|
||||
$clearers = array();
|
||||
|
@ -27,7 +27,7 @@ class CachePoolClearerPassTest extends TestCase
|
||||
{
|
||||
$container = new ContainerBuilder();
|
||||
$container->setParameter('kernel.debug', false);
|
||||
$container->setParameter('kernel.name', 'app');
|
||||
$container->setParameter('kernel.container_class', 'app');
|
||||
$container->setParameter('kernel.environment', 'prod');
|
||||
$container->setParameter('kernel.root_dir', 'foo');
|
||||
|
||||
|
@ -32,7 +32,7 @@ class CachePoolPassTest extends TestCase
|
||||
{
|
||||
$container = new ContainerBuilder();
|
||||
$container->setParameter('kernel.debug', false);
|
||||
$container->setParameter('kernel.name', 'app');
|
||||
$container->setParameter('kernel.container_class', 'app');
|
||||
$container->setParameter('kernel.environment', 'prod');
|
||||
$container->setParameter('kernel.root_dir', 'foo');
|
||||
$adapter = new Definition();
|
||||
@ -54,7 +54,7 @@ class CachePoolPassTest extends TestCase
|
||||
{
|
||||
$container = new ContainerBuilder();
|
||||
$container->setParameter('kernel.environment', 'prod');
|
||||
$container->setParameter('kernel.name', 'app');
|
||||
$container->setParameter('kernel.container_class', 'app');
|
||||
$container->setParameter('kernel.root_dir', 'foo');
|
||||
|
||||
$container->register('cache.adapter.array', ArrayAdapter::class)->addArgument(0);
|
||||
@ -72,7 +72,7 @@ class CachePoolPassTest extends TestCase
|
||||
{
|
||||
$container = new ContainerBuilder();
|
||||
$container->setParameter('kernel.debug', false);
|
||||
$container->setParameter('kernel.name', 'app');
|
||||
$container->setParameter('kernel.container_class', 'app');
|
||||
$container->setParameter('kernel.environment', 'prod');
|
||||
$container->setParameter('cache.prefix.seed', 'foo');
|
||||
$cachePool = new Definition();
|
||||
@ -97,7 +97,7 @@ class CachePoolPassTest extends TestCase
|
||||
{
|
||||
$container = new ContainerBuilder();
|
||||
$container->setParameter('kernel.debug', false);
|
||||
$container->setParameter('kernel.name', 'app');
|
||||
$container->setParameter('kernel.container_class', 'app');
|
||||
$container->setParameter('kernel.environment', 'prod');
|
||||
$container->setParameter('cache.prefix.seed', 'foo');
|
||||
$cachePool = new Definition();
|
||||
@ -123,7 +123,7 @@ class CachePoolPassTest extends TestCase
|
||||
{
|
||||
$container = new ContainerBuilder();
|
||||
$container->setParameter('kernel.debug', false);
|
||||
$container->setParameter('kernel.name', 'app');
|
||||
$container->setParameter('kernel.container_class', 'app');
|
||||
$container->setParameter('kernel.environment', 'prod');
|
||||
$container->setParameter('kernel.root_dir', 'foo');
|
||||
$adapter = new Definition();
|
||||
|
@ -1,6 +1,11 @@
|
||||
CHANGELOG
|
||||
=========
|
||||
|
||||
4.2.0
|
||||
-----
|
||||
|
||||
* deprecated `KernelInterface::getName()` and the `kernel.name` parameter
|
||||
|
||||
4.1.0
|
||||
-----
|
||||
|
||||
|
@ -60,7 +60,7 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte
|
||||
'token' => $response->headers->get('X-Debug-Token'),
|
||||
'symfony_version' => Kernel::VERSION,
|
||||
'symfony_state' => 'unknown',
|
||||
'name' => isset($this->kernel) ? $this->kernel->getName() : 'n/a',
|
||||
'name' => 'n/a',
|
||||
'env' => isset($this->kernel) ? $this->kernel->getEnvironment() : 'n/a',
|
||||
'debug' => isset($this->kernel) ? $this->kernel->isDebug() : 'n/a',
|
||||
'php_version' => PHP_VERSION,
|
||||
@ -227,6 +227,8 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte
|
||||
* Gets the application name.
|
||||
*
|
||||
* @return string The application name
|
||||
*
|
||||
* @deprecated since Symfony 4.2
|
||||
*/
|
||||
public function getAppName()
|
||||
{
|
||||
|
@ -58,6 +58,9 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
|
||||
protected $environment;
|
||||
protected $debug;
|
||||
protected $booted = false;
|
||||
/**
|
||||
* @deprecated since Symfony 4.2
|
||||
*/
|
||||
protected $name;
|
||||
protected $startTime;
|
||||
|
||||
@ -81,7 +84,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
|
||||
$this->environment = $environment;
|
||||
$this->debug = $debug;
|
||||
$this->rootDir = $this->getRootDir();
|
||||
$this->name = $this->getName();
|
||||
$this->name = $this->getName(false);
|
||||
}
|
||||
|
||||
public function __clone()
|
||||
@ -271,8 +274,12 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getName()
|
||||
public function getName(/* $triggerDeprecation = true */)
|
||||
{
|
||||
if (0 === \func_num_args() || func_get_arg(0)) {
|
||||
@trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2.', __METHOD__), E_USER_DEPRECATED);
|
||||
}
|
||||
|
||||
if (null === $this->name) {
|
||||
$this->name = preg_replace('/[^a-zA-Z0-9_]+/', '', basename($this->rootDir));
|
||||
if (ctype_digit($this->name[0])) {
|
||||
@ -424,7 +431,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
|
||||
*/
|
||||
protected function getContainerClass()
|
||||
{
|
||||
return $this->name.ucfirst($this->environment).($this->debug ? 'Debug' : '').'ProjectContainer';
|
||||
return str_replace('\\', '_', \get_class($this)).ucfirst($this->environment).($this->debug ? 'Debug' : '').'Container';
|
||||
}
|
||||
|
||||
/**
|
||||
@ -579,6 +586,9 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
|
||||
'kernel.project_dir' => realpath($this->getProjectDir()) ?: $this->getProjectDir(),
|
||||
'kernel.environment' => $this->environment,
|
||||
'kernel.debug' => $this->debug,
|
||||
/*
|
||||
* @deprecated since Symfony 4.2
|
||||
*/
|
||||
'kernel.name' => $this->name,
|
||||
'kernel.cache_dir' => realpath($cacheDir = $this->warmupDir ?: $this->getCacheDir()) ?: $cacheDir,
|
||||
'kernel.logs_dir' => realpath($this->getLogDir()) ?: $this->getLogDir(),
|
||||
|
@ -100,6 +100,8 @@ interface KernelInterface extends HttpKernelInterface, \Serializable
|
||||
* Gets the name of the kernel.
|
||||
*
|
||||
* @return string The kernel name
|
||||
*
|
||||
* @deprecated since Symfony 4.2
|
||||
*/
|
||||
public function getName();
|
||||
|
||||
|
@ -30,7 +30,7 @@ class ConfigDataCollectorTest extends TestCase
|
||||
$this->assertSame('test', $c->getEnv());
|
||||
$this->assertTrue($c->isDebug());
|
||||
$this->assertSame('config', $c->getName());
|
||||
$this->assertSame('testkernel', $c->getAppName());
|
||||
$this->assertSame('n/a', $c->getAppName());
|
||||
$this->assertRegExp('~^'.preg_quote($c->getPhpVersion(), '~').'~', PHP_VERSION);
|
||||
$this->assertRegExp('~'.preg_quote((string) $c->getPhpVersionExtra(), '~').'$~', PHP_VERSION);
|
||||
$this->assertSame(PHP_INT_SIZE * 8, $c->getPhpArchitecture());
|
||||
|
@ -75,7 +75,7 @@ class KernelTest extends TestCase
|
||||
$kernel->boot();
|
||||
|
||||
$containerDir = __DIR__.'/Fixtures/cache/custom/'.substr(\get_class($kernel->getContainer()), 0, 16);
|
||||
$this->assertTrue(unlink(__DIR__.'/Fixtures/cache/custom/FixturesCustomDebugProjectContainer.php.meta'));
|
||||
$this->assertTrue(unlink(__DIR__.'/Fixtures/cache/custom/FixturesSymfony_Component_HttpKernel_Tests_CustomProjectDirKernelCustomDebugContainer.php.meta'));
|
||||
$this->assertFileExists($containerDir);
|
||||
$this->assertFileNotExists($containerDir.'.legacy');
|
||||
|
||||
@ -302,6 +302,9 @@ EOF;
|
||||
$this->assertEquals(__DIR__.\DIRECTORY_SEPARATOR.'Fixtures', realpath($kernel->getRootDir()));
|
||||
}
|
||||
|
||||
/**
|
||||
* @group legacy
|
||||
*/
|
||||
public function testGetName()
|
||||
{
|
||||
$kernel = new KernelForTest('test', true);
|
||||
@ -309,6 +312,9 @@ EOF;
|
||||
$this->assertEquals('Fixtures', $kernel->getName());
|
||||
}
|
||||
|
||||
/**
|
||||
* @group legacy
|
||||
*/
|
||||
public function testOverrideGetName()
|
||||
{
|
||||
$kernel = new KernelForOverrideName('test', true);
|
||||
@ -506,6 +512,9 @@ EOF;
|
||||
$this->assertTrue($kernel->getContainer()->getParameter('test_executed'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @group legacy
|
||||
*/
|
||||
public function testKernelRootDirNameStartingWithANumber()
|
||||
{
|
||||
$dir = __DIR__.'/Fixtures/123';
|
||||
@ -532,14 +541,14 @@ EOF;
|
||||
|
||||
$containerClass = \get_class($kernel->getContainer());
|
||||
$containerFile = (new \ReflectionClass($kernel->getContainer()))->getFileName();
|
||||
unlink(__DIR__.'/Fixtures/cache/custom/FixturesCustomDebugProjectContainer.php.meta');
|
||||
unlink(__DIR__.'/Fixtures/cache/custom/FixturesSymfony_Component_HttpKernel_Tests_CustomProjectDirKernelCustomDebugContainer.php.meta');
|
||||
|
||||
$kernel = new CustomProjectDirKernel();
|
||||
$kernel->boot();
|
||||
|
||||
$this->assertInstanceOf($containerClass, $kernel->getContainer());
|
||||
$this->assertFileExists($containerFile);
|
||||
unlink(__DIR__.'/Fixtures/cache/custom/FixturesCustomDebugProjectContainer.php.meta');
|
||||
unlink(__DIR__.'/Fixtures/cache/custom/FixturesSymfony_Component_HttpKernel_Tests_CustomProjectDirKernelCustomDebugContainer.php.meta');
|
||||
|
||||
$kernel = new CustomProjectDirKernel(function ($container) { $container->register('foo', 'stdClass')->setPublic(true); });
|
||||
$kernel->boot();
|
||||
@ -707,9 +716,9 @@ class CustomProjectDirKernel extends Kernel
|
||||
private $buildContainer;
|
||||
private $httpKernel;
|
||||
|
||||
public function __construct(\Closure $buildContainer = null, HttpKernelInterface $httpKernel = null, $name = 'custom')
|
||||
public function __construct(\Closure $buildContainer = null, HttpKernelInterface $httpKernel = null, $env = 'custom')
|
||||
{
|
||||
parent::__construct($name, true);
|
||||
parent::__construct($env, true);
|
||||
|
||||
$this->baseDir = 'foo';
|
||||
$this->buildContainer = $buildContainer;
|
||||
@ -725,6 +734,11 @@ class CustomProjectDirKernel extends Kernel
|
||||
{
|
||||
}
|
||||
|
||||
protected function getContainerClass()
|
||||
{
|
||||
return $this->name.parent::getContainerClass();
|
||||
}
|
||||
|
||||
public function getProjectDir()
|
||||
{
|
||||
return $this->baseDir;
|
||||
|
Reference in New Issue
Block a user