Странное поведение в библиотеке codeigniter - PullRequest
0 голосов
/ 05 августа 2011

Я создал невероятно простую библиотеку с единственной функцией для проверки, вошел ли пользователь в систему сейчас или нет.

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 

class Lib {

    public function is_logged_in()
    {
        $CI =& get_instance();
        if($CI->session->userdata('uid') === FALSE)
        {
            return FALSE;
        }
        else
        {
            return TRUE;
        }
    }
}

/* End of file Lib.php */

Если я вызываю функцию из контроллера, код, безусловно, запускается, и когда он не входит в систему, он превращается в оператор if. Я могу добавить эхо, чтобы проверить, что код определенно выполняется, но ничего не возвращается. Если я изменю номер возврата, ничего не возвращается. Если я изменю возвращаемое значение на строку, тогда и только тогда вещи действительно возвращаются. Я вызываю функцию, подобную $this->lib->is_logged_in(), и добавил библиотеку в файл autoload.php.

Возвращение определенно выполняется при выходе из функции. сообщение об ошибке установлено на E_ALL. Почему, черт возьми, это не работает?

(также да, я понимаю, что функция еще не завершена и не безопасна.)

1 Ответ

1 голос
/ 05 августа 2011

Как вы определяете, что возврат выполнен? - NullUserException

@ NullUserException: блок кода завершается. Я могу повторить до любого возврата, и он будет работать, я могу повторить после любого, и он не будет. - циклон

Если вы пытаетесь echo что-то после return в вашей функции, это не сработает, я думаю, это, вероятно, универсально для всех языков. Все, что после return не будет выполнено. Он будет проанализирован, но не выполнен.

var_dump($this->lib->is_logged_in()) должен выдавать bool(true) или bool(false), или ошибку «Попытка получить свойство необъекта», если lib загружен неправильно.

Если у вас нет того, чем вы не делитесь с нами, функция должна работать как положено.

Если вы все еще сомневаетесь, присвойте возвращаемое значение переменной, затем var_dump() переменную перед вами return. Должен быть такой же результат.

РЕДАКТИРОВАТЬ : Извините, я пропустил это в длинном потоке комментариев:

var_dump () показывает, что false действительно возвращается, почему я не могу просто повторить его

Я не верю, что эхо FALSE должно дать вам вывод , но эхо TRUE должно дать вам 1.

Это также не имеет ничего общего с Codeigniter.

Для всех практических целей нет веской причины для echo возвращаемого значения этой функции или чего-либо еще, где вы ожидаете логическое возвращаемое значение. Если он возвращает ожидаемое вами значение, значит, он работает.

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