Звʼяжіть успадкований додаток з сесіями Symfony

Дата оновлення перекладу 2022-11-25

Звʼяжіть успадкований додаток з сесіями Symfony

Якщо ви інтегруєте комплексний фреймворк Symfony в успадкований додаток, який починає сесію з session_start(), то вам все ще може вдатися використати управління сесією Symfony, шляхом використання сесії PHP-мосту.

Якщо додаток має свій власний PHP обробник збережень, ви можете вказати нуль для handler_id:

  • YAML
  • XML
  • PHP
1
2
3
4
5
# config/packages/framework.yaml
framework:
    session:
        storage_factory_id: session.storage.factory.php_bridge
        handler_id: ~

В іншому випадку, якщо проблема просто в тому, що ви не можете уникнути того, щоб додаток почав сесію з session_start(), то ви все ще можете використати обробник збереження сесій, заснований на Symfony, вказавши обробник збережень як вказано у прикладі нижче:

  • YAML
  • XML
  • PHP
1
2
3
4
5
# config/packages/framework.yaml
framework:
    session:
        storage_factory_id: session.storage.factory.php_bridge
        handler_id: session.handler.native_file

Note

Якщо успадкований додаток вимагає власного обробника збережнь, не перевизначайте його. Замість цього, встановіть handler_id: ~. Відмітьте, що обробник збережень не може бути змінений, коли сесія вже була розпочата. Якщо додаток запускає сесію до ініціалізації Symfony, то обробник збережень вже буде встановлений. У такому випадку, вам знадобиться handler_id: ~. Перевизначайте обробник збережень лише у тому випадку, якщо ви впевнені, що успадкований додаток може використовувати обробник збережень Symfony без будь-яких ефектів, і в тому, що сесія не була розпочата це до того, як була ініціалізована Symfony.

Щоб дізнатися більше, дивіться Інтеграція з успадкованими сесіями.