Documentação do Symfony - versão 3.1
Renderizada do repositório symfony-docs-pt-BR no Github
New in version 2.3: A capacidade de integrar com uma sessão legada PHP foi introduzida no Symfony 2.3.
Se você está integrando o Framework Symfony full-stack em uma aplicação legada
que inicia a sessão com session_start()
, você ainda pode ser capaz de
usar o gerenciamento de sessão do Symfony usando uma ponte com sessão PHP.
Se a aplicação tiver definido seu próprio manipulador de armazenamento PHP, você pode
especificar null para handler_id
:
1 2 3 4 | framework:
session:
storage_id: session.storage.php_bridge
handler_id: ~
|
1 2 3 4 5 6 7 8 9 10 | <?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>
|
1 2 3 4 5 | $container->loadFromExtension('framework', array(
'session' => array(
'storage_id' => 'session.storage.php_bridge',
'handler_id' => null,
));
|
Caso contrário, se o problema é simplesmente que você não pode evitar que a aplicação
inicie a sessão com session_start()
, você ainda pode fazer uso de um manipulador de
armazenamento de sessão com base no Symfony especificando o manipulador de armazenamento
como no exemplo a seguir:
1 2 3 4 | framework:
session:
storage_id: session.storage.php_bridge
handler_id: session.handler.native_file
|
1 2 3 4 5 6 7 8 9 10 | <?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>
|
1 2 3 4 5 | $container->loadFromExtension('framework', array(
'session' => array(
'storage_id' => 'session.storage.php_bridge',
'handler_id' => 'session.storage.native_file',
));
|
Note
Se a aplicação legada requer seu próprio manipulador de armazenamento de sessão, não
sobrescreva ele. Em vez disso defina handler_id: ~
. Note que o manipulador de armazenamento
não pode ser alterado uma vez que a sessão foi iniciada. Se a aplicação
inicia a sessão antes do Symfony ser inicializado, o manipulador de armazenamento já
terá sido definido. Nesse caso, será necessário handler_id: ~
.
Apenas sobrescreva o manipulador de armazenamento se você tem certeza que a aplicação legada
pode usar o manipulador de armazenamento do Symfony sem efeitos colaterais e que a sessão
não foi iniciada antes do Symfony ser inicializado.
Para mais detalhes, consulte /components/http_foundation/session_php_bridge.