[HttpFoundation] Fix forward-compat of NativeSessionStorage with PHP 7.2

This commit is contained in:
Samuel ROZE 2017-10-12 11:48:23 +01:00 committed by Nicolas Grekas
parent efb4891981
commit 00a1357d82
2 changed files with 32 additions and 1 deletions

View File

@ -102,6 +102,12 @@ class NativeSessionStorage implements SessionStorageInterface
*/
public function __construct(array $options = array(), $handler = null, MetadataBag $metaBag = null)
{
$this->setMetadataBag($metaBag);
if (\PHP_VERSION_ID >= 50400 && \PHP_SESSION_ACTIVE === session_status()) {
return;
}
$options += array(
// disable by default because it's managed by HeaderBag (if used)
'cache_limiter' => '',
@ -114,7 +120,6 @@ class NativeSessionStorage implements SessionStorageInterface
register_shutdown_function('session_write_close');
}
$this->setMetadataBag($metaBag);
$this->setOptions($options);
$this->setSaveHandler($handler);
}

View File

@ -270,4 +270,30 @@ class NativeSessionStorageTest extends TestCase
$this->assertSame($id, $storage->getId(), 'Same session ID after restarting');
$this->assertSame(7, $storage->getBag('attributes')->get('lucky'), 'Data still available');
}
/**
* @requires PHP 5.4
*/
public function testCanCreateNativeSessionStorageWhenSessionAlreadyStarted()
{
session_start();
$this->getStorage();
// Assert no exception has been thrown by `getStorage()`
$this->addToAssertionCount(1);
}
/**
* @requires PHP 5.4
*/
public function testSetSessionOptionsOnceSessionStartedIsIgnored()
{
session_start();
$this->getStorage(array(
'name' => 'something-else',
));
// Assert no exception has been thrown by `getStorage()`
$this->addToAssertionCount(1);
}
}