Merge branch '3.4'

* 3.4:
  [HttpFoundation] Fix forward-compat of NativeSessionStorage with PHP 7.2
This commit is contained in:
Nicolas Grekas 2017-11-05 20:07:35 +01:00
commit 8e5b3b1d79
2 changed files with 26 additions and 1 deletions

View File

@ -96,6 +96,12 @@ class NativeSessionStorage implements SessionStorageInterface
*/
public function __construct(array $options = array(), $handler = null, MetadataBag $metaBag = null)
{
$this->setMetadataBag($metaBag);
if (\PHP_SESSION_ACTIVE === session_status()) {
return;
}
$options += array(
'cache_limiter' => 'private_no_expire',
'cache_expire' => 0,
@ -106,7 +112,6 @@ class NativeSessionStorage implements SessionStorageInterface
session_register_shutdown();
$this->setMetadataBag($metaBag);
$this->setOptions($options);
$this->setSaveHandler($handler);
}

View File

@ -242,4 +242,24 @@ 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');
}
public function testCanCreateNativeSessionStorageWhenSessionAlreadyStarted()
{
session_start();
$this->getStorage();
// Assert no exception has been thrown by `getStorage()`
$this->addToAssertionCount(1);
}
public function testSetSessionOptionsOnceSessionStartedIsIgnored()
{
session_start();
$this->getStorage(array(
'name' => 'something-else',
));
// Assert no exception has been thrown by `getStorage()`
$this->addToAssertionCount(1);
}
}