@@ -79,7 +79,7 @@ examples if you wish to write your own.
79
79
Example usage::
80
80
81
81
use Symfony\Component\HttpFoundation\Session\Session;
82
- use Symfony\Component\HttpFoundation\Session\Storage\SessionStorage ;
82
+ use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage ;
83
83
use Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler;
84
84
85
85
$storage = new NativeSessionStorage(array(), new PdoSessionHandler());
@@ -217,6 +217,41 @@ particular cookie by reading the ``getLifetime()`` method::
217
217
The expiry time of the cookie can be determined by adding the created
218
218
timestamp and the lifetime.
219
219
220
+ Session start-on-demand
221
+ ~~~~~~~~~~~~~~~~~~~~~~~
222
+
223
+ .. versionadded :: 2.3
224
+ Control over session "start-on-demand" was added in Symfony 2.3.
225
+
226
+ In versions 2.1-2.2, Symfony Sessions automatically invoked `$session->start() ` when
227
+ any attempt was made to access session data (effectively 'start on demand').
228
+ From Symfony 2.3 this behaviour can be controlled.
229
+
230
+ There are three modes defined by :class: `Symfony\\ Component\\ HttpFoundation\\ Session\\ Storage\\ SessionStorageInterface `
231
+
232
+ The settings are as follows:
233
+
234
+ - `SessionStorageInterface::NO_START_ON_DEMAND_STRICT ` - The session will not be started on demand
235
+ and any attempt to read or write session data will result in a `\RuntimeException `
236
+ - `SessionStorageInterface::START_ON_DEMAND ` - The session will be started if it hasn't already been
237
+ when any attempt is made to read ro write session data.
238
+ - `SessionStorageInterface::NO_START_ON_DEMAND_LAX ` - The sessions will not be started on demand
239
+ when session data is read or written to. It will allow access to the unitialized `BagInterface `.
240
+ If this session is subsequently started manually after data is written to a `BagInterface ` will
241
+ be overwritten (by the session data read from persistence).
242
+
243
+ You can configure these by injecting a configured storage engine into the session::
244
+
245
+ <?php
246
+ use Symfony\Component\HttpFoundation\Session\Session;
247
+ use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
248
+ use Symfony\Component\HttpFoundation\Session\Storage\SessionStorageInterface;
249
+ use Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler;
250
+
251
+ $storage = new NativeSessionStorage(array(), new PdoSessionHandler(), SessionStorageInterface::NO_START_ON_DEMAND_STRICT);
252
+ $session = new Session($storage);
253
+
254
+
220
255
PHP 5.4 compatibility
221
256
~~~~~~~~~~~~~~~~~~~~~
222
257
0 commit comments