<?php/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/namespaceSymfony\Component\HttpFoundation\Session\Storage;
useSymfony\Component\HttpFoundation\Session\Storage\MetadataBag;
useSymfony\Component\HttpFoundation\Session\Storage\Proxy\AbstractProxy;
useSymfony\Component\HttpFoundation\Session\Storage\Handler\NativeSessionHandler;
/**
* Allows session to be started by PHP and managed by Symfony2
*
* @author Drak <drak@zikula.org>
*/class PhpBridgeSessionStorageextends NativeSessionStorage {
/**
* Constructor.
*
* @param AbstractProxy|NativeSessionHandler|\SessionHandlerInterface|null $handler
* @param MetadataBag $metaBag MetadataBag
*/
public function__construct($handler = null, MetadataBag $metaBag = null) {
$this
->setMetadataBag($metaBag);
$this
->setSaveHandler($handler);
}
/**
* {@inheritdoc}
*/
public functionstart() {
if ($this->started && !$this->closed) {
returntrue;
}
$this
->loadSession();
if (!$this->saveHandler
->isWrapper() && !$this->saveHandler
->isSessionHandlerInterface()) {
// This condition matches only PHP 5.3 + internal save handlers$this->saveHandler
->setActive(true);
}
returntrue;
}
/**
* {@inheritdoc}
*/
public functionclear() {
// clear out the bags and nothing else that may be set
// since the purpose of this driver is to share a handlerforeach ($this->bags as $bag) {
$bag
->clear();
}
// reconnect the bags to the session$this
->loadSession();
}
}