Spec-Zone.ru › Symfony 4.1

MockArraySessionStorage

class MockArraySessionStorage implements SessionStorageInterface

MockArraySessionStorage имитирует сеанс для юнит-тестов.

PHP сеанс фактически не запускается, так как сеанс может быть инициализирован и закрыт только один раз за цикл выполнения PHP.

При функциональном тестировании следует использовать MockFileSessionStorage.

Свойства

protected string $id
protected string $name
protected bool $started
protected bool $closed
protected array $data
protected MetadataBag $metadataBag
protected array|SessionBagInterface[] $bags

Методы

__construct(string $name = 'MOCKSESSID', MetadataBag $metaBag = null)
setSessionData(array $array)
bool start()

Запускает сеанс.

bool regenerate(bool $destroy = false, int $lifetime = null)

Перегенерирует идентификатор, представляющий это хранилище.

string getId()

Возвращает идентификатор сеанса.

setId(string $id)

Устанавливает идентификатор сеанса.

mixed getName()

Возвращает имя сеанса.

setName(string $name)

Устанавливает имя сеанса.

save()

Принудительно сохраняет и закрывает сеанс.

clear()

Очищает все данные сеанса в памяти.

registerBag(SessionBagInterface $bag)

Регистрирует SessionBagInterface для использования.

SessionBagInterface getBag(string $name)

Получает SessionBagInterface по имени.

bool isStarted()

Проверяет, запущен ли сеанс.

setMetadataBag(MetadataBag $bag = null)
MetadataBag getMetadataBag()

Получает MetadataBag.

string generateId()

Генерирует идентификатор сеанса.

loadSession()

Подробности

__construct(string $name = 'MOCKSESSID', MetadataBag $metaBag = null)

Параметры

string $name
MetadataBag $metaBag

setSessionData(array $array)

Параметры

array $array

bool start()

Запускает сеанс.

Возвращаемое значение

bool True, если запущен

Исключения

RuntimeException если возникла ошибка при запуске сеанса

bool regenerate(bool $destroy = false, int $lifetime = null)

Перегенерирует идентификатор, представляющий это хранилище.

Этот метод должен вызывать session_regenerate_id($destroy), если этот интерфейс используется для объекта хранилища, предназначенного для юнит- или функционального тестирования, где реальный PHP сеанс может мешать тестированию.

Примечание: regenerate+destroy не должно очищать данные сеанса в памяти, а только удалять данные сеанса из постоянного хранилища.

Внимание: при перегенерации идентификатора сеанса в разработке PHP сеансов нет блокировки. См. https://bugs.php.net/bug.php?id=61470 для обсуждения. Поэтому необходимо убедиться, что сгенерированный сеанс сохранен ДО отправки заголовков с новым идентификатором. Symfony's HttpKernel предлагает слушатель для этого. См. Symfony\Component\HttpKernel\EventListener\SaveSessionListener. В противном случае данные сеанса могут снова потеряться для одновременных запросов с новым идентификатором. Одним из результатов может стать выход из системы после входа в систему.

Параметры

bool $destroy Уничтожить сеанс при перегенерации?
int $lifetime Устанавливает срок действия cookie сеанса. Значение null оставит системные настройки без изменений, 0 устанавливает cookie, который истекает с сеансом браузера. Время в секундах, а не метка времени Unix.

Возвращаемое значение

bool True, если сеанс перегенерирован, false в случае ошибки

Исключения

RuntimeException Если при перегенерации этого хранилища произошла ошибка

string getId()

Возвращает идентификатор сеанса.

Возвращаемое значение

string Идентификатор сеанса или пустая строка

setId(string $id)

Устанавливает идентификатор сеанса.

Параметры

string $id

mixed getName()

Возвращает имя сеанса.

Возвращаемое значение

mixed Имя сеанса

setName(string $name)

Устанавливает имя сеанса.

Параметры

string $name

save()

Принудительно сохраняет и закрывает сеанс.

Этот метод должен вызывать session_write_close(), если этот интерфейс используется для объекта хранилища, предназначенного для юнит- или функционального тестирования, где реальный PHP сеанс может мешать тестированию, в таком случае он должен фактически сохранять данные сеанса, если это необходимо.

Исключения

RuntimeException если сеанс сохранен без запуска, или если сеанс уже закрыт

clear()

Очищает все данные сеанса в памяти.

registerBag(SessionBagInterface $bag)

Регистрирует SessionBagInterface для использования.

Параметры

SessionBagInterface $bag

SessionBagInterface getBag(string $name)

Получает SessionBagInterface по имени.

Параметры

string $name

Возвращаемое значение

SessionBagInterface

Исключения

InvalidArgumentException Если пакет не существует

bool isStarted()

Проверяет, запущен ли сеанс.

Возвращаемое значение

bool True, если запущен, false в противном случае

setMetadataBag(MetadataBag $bag = null)

Параметры

MetadataBag $bag

MetadataBag getMetadataBag()

Получает MetadataBag.

Возвращаемое значение

MetadataBag

protected string generateId()

Генерирует идентификатор сеанса.

Это не обязательно должно быть очень криптографически безопасным, так как это просто имитация.

Возвращаемое значение

string

protected loadSession()

© 2004–2017 Fabien Potencier
Licensed under the MIT License.
https://api.symfony.com/4.1/Symfony/Component/HttpFoundation/Session/Storage/MockArraySessionStorage.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API