2.3 能夠與傳統(tǒng) PHP 會話結(jié)合的能力在 Symfony 2.3 中介紹。
如果您整合 Symfony 的全??蚣芎蛷?session_start() 開始會話的遺留應(yīng)用程序的話,通過使用 PHP Bridge session,可以使您仍然能夠使用 Symfony 會話管理。
如果應(yīng)用程序已設(shè)置它自己的 PHP 保存處理程序,您可以使 handler_id 指定為空:
YAML:
framework:
session:
storage_id: session.storage.php_bridge
handler_id: ~
XML:
<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:framework="http://symfony.com/schema/dic/symfony">
<framework:config>
<framework:session storage-id="session.storage.php_bridge"
handler-id="null"
/>
</framework:config>
</container>
PHP:
$container->loadFromExtension('framework', array(
'session' => array(
'storage_id' => 'session.storage.php_bridge',
'handler_id' => null,
));
否則,如果問題僅僅是您不能避免應(yīng)用程序以 session_start() 啟動會話,您仍可以通過指定保存處理程序來使用一個基于 Symfony 的會話保存處理程序,就像下面的例子那樣:
YAML:
framework:
session:
storage_id: session.storage.php_bridge
handler_id: session.handler.native_file
XML:
<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:framework="http://symfony.com/schema/dic/symfony">
<framework:config>
<framework:session storage-id="session.storage.php_bridge"
handler-id="session.storage.native_file"
/>
</framework:config>
</container>
PHP:
$container->loadFromExtension('framework', array(
'session' => array(
'storage_id' => 'session.storage.php_bridge',
'handler_id' => 'session.storage.native_file',
));
如果遺留應(yīng)用程序需要它自己的會話保存處理程序,請不要重寫它。代替的是設(shè)置 handler_id: ~。請注意,在會話開始后,會話保存處理程序?qū)⒉荒芨摹H绻麘?yīng)用程序在 Symfony 初始化之前開始會話,會話保存程序會早已設(shè)置好。這種情況下,您需要 handler_id:。只有當(dāng)您確認(rèn)遺留應(yīng)用程序可以無副作用的使用 Symfony 保存處理程序并且會話不在 Symfony 初始化之前啟動的情況下重寫保存程序。
從 Integrating with Legacy Sessions 獲取更多細(xì)節(jié)。