CodeIgniter 3 — средство получения элементов сеанса с пустой функцией PHP

Я только что заметил что-то странное при использовании системы сессий CodeIgniter 3, и мне интересно, является ли это проблемой или просто нормальным с PHP.

Чтобы объяснить, я инициализировал эту переменную:

$this->session->connected_client_id = 9;

Когда я делаю это:

$id = $this->session->connected_client_id
// Testing using "get_userdata" function
if (empty($this->session->get_userdata('connected_client_id'))) {
echo "EMPTY $id";
} else {
echo "NOT EMPTY $id";
}

Все нормально, я получаю: НЕ ПУСТО 9

НО, когда я делаю это:

$id = $this->session->connected_client_id
// Testing using the CodeIgniter 3 session getter
if (empty($this->session->connected_client_id))) {
echo "EMPTY $id";
} else {
echo "NOT EMPTY $id";
}

Это НЕ хорошо, я получаю: ПУСТО 9

Хотя, когда я делаю это:

$id = $this->session->connected_client_id
// Testing using a variable as intermediate from the CI3 session getter
if (empty($id))) {
echo "EMPTY $id";
} else {
echo "NOT EMPTY $id";
}

Все нормально, я получаю: НЕ ПУСТО 9

Я использую переменную в качестве промежуточного от предыдущего получателя, который возвращал «ПУСТО 9» …
У кого-нибудь есть объяснение этому? И есть ли правильный способ выполнить эту проверку без этой «пустой проблемы»?

3

Решение

Это … оба — нормально в PHP, учитывая CI_Session код класса, но также проблема в CodeIgniter, потому что этот конкретный вариант использования должен работать, но не работает.

Этот патч исправит это в следующей версии CodeIgniter (3.0.6): https://github.com/bcit-ci/CodeIgniter/commit/2c10f60586faf59b9380608c5a9bf01ff2522483

Тем не менее, я склонен предложить доступ к $_SESSION прямой массив — это то, что библиотека дает вам в любом случае.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]