Как передать зарегистрированное значение между классами? - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть пользовательский класс со структурой, подобной этой

class User
{

    private $_data, $_isLoggedIn;

    public function __construct()
    {
        //Initialising variables
    }

    public function login()
    {
        //logs in the user and assigns the value true to $_isLoggedIn i.e $this->_isLoggedIn = true
    }

    public function isLoggedIn()
    {
        return $this->_isLoggedIn;
    }

}

Что я хочу сделать, это использовать значение isLoggedIn, чтобы проверить, зарегистрирован ли пользователь в другом классе для проверкиесли пользователь вошел в систему. То, что я сделал, выглядит так:

class Oranges
{
    public function write()
    {
        $user = new User;
        if($user->isLogedIn) echo 'Logged In';
    }
}

Но каждый раз, когда я вызываю класс Oranges, я теряю значение _isLoggedIn.

Как я могу проверить, вошел ли пользователь в систему без использования сеансов, которые, как мне сказали, не безопасны.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Каждый раз, когда вы вызываете метод write(), создается экземпляр new User, который является неправильной точкой.

вы можете сохранить User и затем использовать один и тот же объект каждый раз.

Например, сохранить в переменную

class Oranges
{
    protected  $user;

    public function __construct()
    {
        $this->user = new User; 
    }

    public function write()
    {
        if($this->user->isLogedIn) echo 'Logged In';
    }
}

или , вы можете рассмотреть возможность использования singleton

class User
{

    //...

    private static $instance;

    //...

    public static function getInstance()
    {
        if (is_null(self::$instance)) {
            self::$instance = new User();
        }

        return self::$instance;
    }

}

, тогда вы можетепозвоните User::getInstance() в любое место, чтобы получить User

if (User::getInstance()->isLogedIn()) echo 'Logged In';
0 голосов
/ 26 апреля 2018

У вас есть несколько вариантов.Одним из решений будет сохранение пользовательского объекта в сеансе var, когда он создается, который может быть передан объекту Oranges в качестве параметра, когда он создан.

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