Merge branch '3.3' into 3.4

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

View File

@ -100,6 +100,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,
@ -109,7 +115,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);
}
}