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