【问题标题】:How to get current instance in laravel 4.2如何在 laravel 4.2 中获取当前实例
【发布时间】:2017-01-23 12:49:46
【问题描述】:

所以我正在开发这个使用棘轮作为 websocket 的 Laravel 应用程序,我想在我的 websocket 控制器中获取当前用户会话。以前我使用的是 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()。在我的情况下使用什么是最好的选择?

【问题讨论】:

  • 代码和“getInstance()”方法有什么联系?
  • 对不起,那是我尝试过的代码,但它不起作用,将 getFacadeRoot() 更改为 getInstance()。我在 Laravel 5.2 中使用了 getInstance()

标签: php laravel session websocket ratchet


【解决方案1】:

这似乎有效:

        $app = App::getFacadeApplication();

我找不到任何关于这样做的参考,但通过 Facade 界面找到了它。所以我不知道这是否是好的做法。我使用它是因为我在 Laravel 之外使用 Illuminate。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-20
    • 2019-11-15
    • 2019-03-25
    相关资源
    最近更新 更多