и гугл тоже не помогает совсем.
Пытаюсь реализовать рекурсивное удаление значений из сессии, но внезапно, я не могу передать переменную $_SESSION как ссылку. Вот мой код:
public function unset(string $key): self
{
$keys = $this->parseKey($key);
$this->unsetRecursively($_SESSION, $keys);
return $this;
}
protected function unsetRecursively(&$SESS, array $keys): self
{
if (empty($keys)) {
unset($SESS);
} elseif (isset($SESS)) {
$key = array_shift($keys);
return $this->unsetRecursively($SESS[$key] ?? null, $keys);
}
return $this;
}
protected function parseKey(string $key): array
{
$key = preg_replace('/[\.\/\\\]+/', '/', $key);
$key = explode('/', $key);
return $key;
}
Ругается следующим образом:
::unsetRecursively(): Argument #1 ($SESS) cannot be passed by reference
Правильно ли я понимаю, что глобальную переменную $_SESSION нельзя передать как ссылку? Отсюда возникает вопрос: как тогда можно реализовать удобное удаление значения из сессии в многомерном массиве, сделав для этого удобную функцию?
суть в том, что ключи для массива я хочу передавать одной строкой вида array/some/keys которая парсится. Собственно для методов get() и set() такой подход очень комфортен и легко реализуется. а вот с unset() не прокатило. что делать?
извини, проблема не интересная
допустим, это субъективно. может тогда у тебя есть ответ по существу?
да, не удалять рекурсивно ничего
Обсуждают сегодня