【问题标题】:Laravel 5.2 and Ratchet Class not found未找到 Laravel 5.2 和 Ratchet 类
【发布时间】:2016-08-24 21:24:55
【问题描述】:

我正在为 websockets 使用 Ratchet。它通常可以工作,但我想在我的 ExampleController Laravel Auth 中使用。这应该很容易,但这不起作用:

<?php namespace Annotation\Http\Controllers;
use Auth;
use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;

class ExampleController extends Controller implements MessageComponentInterface {

    public function onOpen(ConnectionInterface $conn) {
       echo Auth::id();

    //etc.
       echo "New Connection! ({$conn->resourceId})";
    }

}

当我在下面的 websocket-server.php(位于 laravel 的根目录)文件中初始化我的控制器时,我总是得到一个 Class Auth not found 异常:

<?php
require __DIR__.'/vendor/autoload.php';

use Ratchet\Server\IoServer;
use Annotation\Http\Controllers\CollaborativeController;

$server = IoServer::factory(
    new ExampleController(),
    8080
);
$server->run();

如果我将我的 ExampleController 用作带有路由的普通控制器,则会找到 Auth 类。 (我也无法使用 auth 助手或任何与 laravel 相关的东西)

为什么会这样?因为 Laravel 还没有初始化还是需要添加路径?

【问题讨论】:

    标签: php laravel ratchet classnotfound


    【解决方案1】:

    auth 函数返回一个验证器实例。为方便起见,您可以使用它来代替 Auth 外观:

    echo auth()->user()->id;
    

    【讨论】:

    • 这行不通,因为没有加载辅助类和 laravel IOC。
    【解决方案2】:

    如果您想加载中间件,请将以下几行添加到您的 server.php 中。 Auth 是一个中间件,它没有初始化和加载。

    require __DIR__.'/../bootstrap/autoload.php'; $app = require_once __DIR__.'/../bootstrap/app.php'; (set a proper path to your bootstrap)

    【讨论】:

      猜你喜欢
      • 2016-05-22
      • 2018-03-16
      • 2016-07-16
      • 1970-01-01
      • 2016-06-16
      • 2016-10-16
      • 1970-01-01
      • 1970-01-01
      • 2016-05-03
      相关资源
      最近更新 更多