Skip to content

Commit f1f8dad

Browse files
milodg
authored andcommitted
SessionExtension: added option handler to pass own SessionHandlerInterface (#146)
1 parent fce11ea commit f1f8dad

File tree

2 files changed

+53
-1
lines changed

2 files changed

+53
-1
lines changed

src/Bridges/HttpDI/SessionExtension.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class SessionExtension extends Nette\DI\CompilerExtension
1919
'debugger' => false,
2020
'autoStart' => 'smart', // true|false|smart
2121
'expiration' => null,
22+
'handler' => null,
2223
];
2324

2425
/** @var bool */
@@ -47,6 +48,9 @@ public function loadConfiguration()
4748
if ($config['expiration']) {
4849
$session->addSetup('setExpiration', [$config['expiration']]);
4950
}
51+
if ($config['handler']) {
52+
$session->addSetup('setHandler', [$config['handler']]);
53+
}
5054
if (isset($config['cookieDomain']) && $config['cookieDomain'] === 'domain') {
5155
$config['cookieDomain'] = $builder::literal('$this->getByType(Nette\Http\IRequest::class)->getUrl()->getDomain(2)');
5256
}
@@ -60,7 +64,7 @@ public function loadConfiguration()
6064
]);
6165
}
6266

63-
unset($config['expiration'], $config['autoStart'], $config['debugger']);
67+
unset($config['expiration'], $config['handler'], $config['autoStart'], $config['debugger']);
6468
if (!empty($config)) {
6569
$session->addSetup('setOptions', [$config]);
6670
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?php
2+
3+
/**
4+
* Test: SessionExtension.
5+
*/
6+
7+
use Nette\Bridges\HttpDI\HttpExtension;
8+
use Nette\Bridges\HttpDI\SessionExtension;
9+
use Nette\DI;
10+
use Tester\Assert;
11+
12+
13+
require __DIR__ . '/../bootstrap.php';
14+
15+
16+
class TestHandler extends SessionHandler
17+
{
18+
public $called = false;
19+
20+
21+
public function open($save_path, $session_name)
22+
{
23+
$this->called = true;
24+
return parent::open($save_path, $session_name);
25+
}
26+
}
27+
28+
29+
$compiler = new DI\Compiler;
30+
$compiler->addExtension('foo', new HttpExtension);
31+
$compiler->addExtension('session', new SessionExtension(false, PHP_SAPI === 'cli'));
32+
33+
$loader = new DI\Config\Loader;
34+
$config = $loader->load(Tester\FileMock::create('
35+
session:
36+
handler: @handler
37+
38+
services:
39+
foo.request: Nette\Http\Request(Nette\Http\UrlScript("http://www.nette.org"))
40+
handler: TestHandler
41+
', 'neon'));
42+
43+
eval($compiler->addConfig($config)->compile());
44+
45+
$container = new Container;
46+
$container->getService('session')->start();
47+
48+
Assert::true($container->getService('handler')->called);

0 commit comments

Comments
 (0)