Невозможно использовать возвращаемое значение метода в контексте записи
При возникновении ошибки возникает следующее:
if( !empty ($this -> session -> userdata( 'user_id') ) )
{
$user_id = $this -> session -> userdata( 'user_id' );
}
else
{
$error = "ID doesn't exist";
}
Я получаю следующую ошибку:
Fatal error: Can't use method return value in write context in (line number)
Как я могу это исправить?
Ответы
Ответ 1
Замените первый оператор if
на if( ! $this->session->userdata('user_id') )
.
Функция empty
проверяет, является ли переменная пустой, но userdata
является функцией. Кроме того, для вашей информации, согласно документации CodeIgniter, функция userdata
возвращает FALSE
, если элемент не существует, а это означает, что если user_id
не существует в вашем сеансе, будет выполнен код в else
.
Ответ 2
Если вы используете библиотеку сессий codeigniter, вам не нужно проверять свои данные
codeigniter уже делает это для вас.
если $this -> session -> userdata( 'user_id')
пуст или не установлен, он будет возвращен как false. Так что просто код что-то вроде этого
$user_id = $this->session->userdata('user_id');
if(!$user_id){ }else{ $error = 'ID doesn't exist'; }
Ответ 3
Функция empty() не может использоваться таким образом. Он ожидает ссылочный аргумент, но не возвращает прямую функцию. Возврат функции не считается переменной, которая может передаваться по ссылке.
$test = $this->session->userdata('user_id');
if(!empty($test))
$user_id = $test;
else
$error = "ID doesn't exist";
Ответ 4
if (($ this → session → userdata ('user_id') > 0)
лучше вместо if (! $this → session → userdata ('user_id'))
потому что иногда он будет делать ошибку