没找到Laravel 5.2和Ratchet Class

时间:2016-08-24 21:24:55

标签: php laravel ratchet classnotfound

我正在使用Ratchet作为websockets。它一般工作,但我想在我的ExampleController Laravels 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的根目录)文件中初始化我的Controller时,我总是得到一个类Auth未找到异常:

<?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尚未初始化或者我是否需要添加路径?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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