diff --git a/src/Symfony/Bridge/Doctrine/HttpFoundation/DbalSessionHandler.php b/src/Symfony/Bridge/Doctrine/HttpFoundation/DbalSessionHandler.php index d819ff0a6c51e..e587e7d682235 100644 --- a/src/Symfony/Bridge/Doctrine/HttpFoundation/DbalSessionHandler.php +++ b/src/Symfony/Bridge/Doctrine/HttpFoundation/DbalSessionHandler.php @@ -41,28 +41,38 @@ class DbalSessionHandler implements \SessionHandlerInterface /** * @var string Column for session id */ - private $idCol = 'sess_id'; + private $idCol; /** * @var string Column for session data */ - private $dataCol = 'sess_data'; + private $dataCol; /** * @var string Column for timestamp */ - private $timeCol = 'sess_time'; + private $timeCol; /** * Constructor. * + * List of available options: + * * db_id_col: The column where to store the session id [default: sess_id] + * * db_data_col: The column where to store the session data [default: sess_data] + * * db_time_col: The column where to store the timestamp [default: sess_time] + * * @param Connection $con A connection * @param string $tableName Table name + * @param array $options An associative array of options */ - public function __construct(Connection $con, $tableName = 'sessions') + public function __construct(Connection $con, $tableName = 'sessions', array $options = array()) { $this->con = $con; $this->table = $tableName; + + $this->idCol = isset($options['db_id_col']) ? $options['db_id_col'] : 'sess_id'; + $this->dataCol = isset($options['db_data_col']) ? $options['db_data_col'] : 'sess_data'; + $this->timeCol = isset($options['db_time_col']) ? $options['db_time_col'] : 'sess_time'; } /** diff --git a/src/Symfony/Bridge/Doctrine/Tests/HttpFoundation/DbalSessionHandlerTest.php b/src/Symfony/Bridge/Doctrine/Tests/HttpFoundation/DbalSessionHandlerTest.php index 4f82bc37bbb79..a48aa75d4e58d 100644 --- a/src/Symfony/Bridge/Doctrine/Tests/HttpFoundation/DbalSessionHandlerTest.php +++ b/src/Symfony/Bridge/Doctrine/Tests/HttpFoundation/DbalSessionHandlerTest.php @@ -25,4 +25,13 @@ public function testConstruct() $connection = $this->getMockBuilder('Doctrine\DBAL\Connection')->disableOriginalConstructor()->getMock(); $handler = new DbalSessionHandler($connection); } + + public function testConstructWithTableNameAndOptions() + { + $connection = $this->getMockBuilder('Doctrine\DBAL\Connection')->disableOriginalConstructor()->getMock(); + $options = array('db_id_col' => 'id', 'db_data_col' => 'data', 'db_time_col' => 'time'); + $table = 'sessions'; + + $handler = new DbalSessionHandler($connection, $table, $options); + } }