Неполный класс в сеансе в PHP

#php #arrays #class #session #constructor

#php #массивы #класс #сеанс #конструктор

Вопрос:

Проблема, с которой я сталкиваюсь, заключается в том, что когда я получаю класс, сохраненный в сеансе, результатом является неполный класс.

 class Users {

    function __construct(){
        FunctionsHelper::includeFiles(
            array(
                ADMINISTRATOR_MODEL_DIRECTORY . 'model.php',
                ADMINISTRATOR_MODEL_DIRECTORY . 'user.php'
            )
        );
    }

    public function setLoggedUser($user){       
        if (session_id() == "")
            session_start();
        $_SESSION['ATT_user'] = $user;
    }

    public function getLoggedUser(){
        if (session_id() == "")
            session_start();

        if (!isset($_SESSION['ATT_user'])) {
            return new User();
        }

        $loggedUser = $_SESSION['ATT_user'];
        $UserId = $logedUser->getUserId();
        if (empty($UserId)) {
            return new User();
        }

        return $loggedUser;
    }
}
  

Проблема заключается в том, когда я вызываю метод getLoggedUser() . $_SESSION['ATT_user'] хранит User объект, который должен быть восстановлен.
Проблема в том, что в __construct функцию я включаю файл, который загружает User класс, поэтому я не понимаю, почему я получаю ошибку. FunctionsHelper::includeFiles Функция включает файлы, но также, если я вызываю функцию include в качестве первой строки в getLoggedUser функции, в $_SESSION массиве все равно будет неполный объект.
Другое дело, если я делаю print_r внутри setLoggedUser() . $_SESSION Содержит завершенный объект!!
Может кто-нибудь объяснить мне, помогите мне, пожалуйста ?!

Я использую IIS 7 вместо Apache.

Комментарии:

1. Используйте автозагрузку класса с помощью composer . getcomposer.org Вам не придется вручную включать файлы и избегать подобных проблем.

2. Нет ли другого варианта, который не требует включения другого файла?

3. Вы могли бы реализовать свою собственную систему автозагрузки, см.: php.net//manual/en/function.spl-autoload-register.php