Как получить текущий экземпляр в laravel 4.2

Итак, я работаю над этим приложением Laravel, которое использует храповик для веб-сокетов, и я хочу получить текущий сеанс пользователей в моем контроллере веб-сокетов. Раньше я работал с Laravel 5.2, и этот код отлично работал.

public function onOpen(ConnectionInterface $conn) {
    $session = (new SessionManager(App::getInstance()))->driver();
    $cookies = $conn->WebSocket->request->getCookies();

    if(!empty($cookies)){
        $laravelCookie = urldecode(isset($cookies[Config::get('session.cookie')]) ? $cookies[Config::get('session.cookie')] : '');

        if(!empty($laravelCookie)){
            $idSession = Crypt::decrypt($laravelCookie);

            $session->setId($idSession);

            $conn->session = $session;
        }
    }

    $newConnection = new \stdClass();
    $newConnection->resourceId = $conn->resourceId;
    $newConnection->conn = $conn;

    $this->clients[] = $newConnection;

    $newConnection->conn->send(json_encode(['status' => 'success', 'message' => 'Response from server, successful']));
}

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

public function onMessage(ConnectionInterface $from, $msg) {
    $user = [];
    $request = json_decode($msg);

    if(isset($from->session)){
        $from->session->start();

        $idUser = $from->session->get(Auth::getName());
        QLog::info($idUser);
        if (isset($idUser)) {
            $user = User::find($idUser);
        }

        $from->session->save();
    }


    if($request->action == 'get-user' && $user){
        $this->clients[0]->conn->send(json_encode(['username' => $user->getFullName()]));
    } else {
        $this->clients[0]->conn->send(json_encode(['username' => 'not found']));
    }
}

Но теперь мне нужно сделать то же самое в Laravel 4.2, но как оказалось, что в Laravel 4.2 нет метода getInstance(). Что было бы лучшей альтернативой для использования в моей ситуации?


person ar4ix8    schedule 15.09.2016    source источник
comment
Какая связь между кодом и методом getInstance()?   -  person Vince    schedule 15.09.2016
comment
извините, это был код, который я пробовал, но он не работал, изменил getFacadeRoot() на getInstance(). Я использовал getInstance() в Laravel 5.2.   -  person ar4ix8    schedule 16.09.2016


Ответы (1)


Кажется, это работает:

        $app = App::getFacadeApplication();

Я не смог найти никаких ссылок на это, но понял это через интерфейс Facade. Так что не знаю, хорошая это практика или нет. Я использую его, потому что использую Illuminate вне Laravel.

person scipilot    schedule 09.08.2018