gpt4 book ai didi

php - 如何在 Laravel 4.2 中获取当前实例

转载 作者:行者123 更新时间:2023-12-04 16:13:11 25 4
gpt4 key购买 nike

所以我正在开发这个 Laravel 应用程序,它使用 Ratchet 作为 websockets,我想在我的 websocket Controller 中获取当前用户 session 。以前我使用 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']));
}

用户连接后,我只在用户发送消息时加载当前 session
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()。在我的情况下使用的最佳替代方法是什么?

最佳答案

这似乎有效:

        $app = App::getFacadeApplication();

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

关于php - 如何在 Laravel 4.2 中获取当前实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39512035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com