Невозможно использовать возвращаемое значение метода в контексте записи - PullRequest
11 голосов
/ 18 июля 2011

Следующее, если условие вызывает ошибку:

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)

Как это исправить?

Ответы [ 4 ]

28 голосов
/ 18 июля 2011

Заменить первый оператор if на if( ! $this->session->userdata('user_id') ).

Функция empty проверяет, является ли переменная пустой, но userdata является функцией.Кроме того, для вашей информации, согласно документации CodeIgniter , функция userdata возвращает FALSE, если элемент не существует, что означает, что если user_id не существует в вашем сеансе,код в else будет выполнен.

5 голосов
/ 10 июля 2012

Если вы используете библиотеку сессий codeigniter, вам не нужно проверять, что ваш codeigniter данных уже делает это за вас.если $this -> session -> userdata( 'user_id') пусто или не установлено, оно будет возвращено как ложное.Так что просто код что-то в этом роде

$user_id = $this->session->userdata('user_id');
if(!$user_id){  }else{ $error = 'ID doesn't exist'; }
2 голосов
/ 18 июля 2011

Функция empty () не может использоваться таким образом. Он ожидает ссылочный аргумент, но не прямой возврат функции. Возврат функции не считается переменной, которую можно передать по ссылке.

$test = $this->session->userdata('user_id');

if(!empty($test))
    $user_id = $test;
else
    $error = "ID doesn't exist";
0 голосов
/ 26 мая 2017

if (($ this -> session -> userdata ('user_id')> 0)

лучше вместо if (! $ This ->сессия -> userdata ('user_id'))

, потому что иногда это приведет к ошибке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...