доступ и использование eloquent в созданном классе / другом пространстве имен в laravel

Я создаю приложение websocket с помощью Ratchet и Laravel и мне нужно использовать запрос Eloquent в моем классе websocket, но eloquent недоступен, так как я использую другое пространство имен в классе websocket.

Вот начало урока:

use Illuminate\Auth\UserTrait;
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableTrait;
use Illuminate\Auth\Reminders\RemindableInterface;
use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;
class Socket extends Eloquent implements MessageComponentInterface, UserInterface, RemindableInterface {

use UserTrait, RemindableTrait;

и это composer.json с картой классов:

"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php",
"app/libraries",
"vendor/cboden/ratchet/src"   // added this
]

Я изменил composer.json из исходного состояния в вышеприведенное, это было похоже на:

...
"psr-0": {                                        //removed this
"MyApp": "vendor/cboden/ratchet/src",  //removed this
}

класс Socket находится в app / library / Socket.php

Хм, я в значительной степени перепробовал все, что приходит мне в голову, кто-то знает, что я делаю не так?

Выдается ошибка:

PHP Warning:  The use statement with non-compound name 'Socket' has no effect in /home/michael/PhpstormProjects/preisopt/app/libraries/Socket-Server.php on line 5

PHP Fatal error:  Class 'Eloquent' not found in /home/michael/PhpstormProjects/preisopt/app/libraries/Socket.php on line 15

Это строка 5 Socket-Server:

 use Socket;

и эта строка 15 сокета:

class Chat extends Eloquent implements MessageComponentInterface, UserInterface, RemindableInterface {

Я также пытался написать строку, как

class Chat extends \Eloquent implements MessageComponentInterface, UserInterface, RemindableInterface {

и это выдает эту ошибку:

PHP Fatal error:  Class 'User' not found in /home/michael/PhpstormProjects/preisopt/app/libraries/Socket.php on line 35

Это строка 35:

  $dbtoken = User::where('username', '=', $split[1] )->get('sockettoken');

Все классы и модели существуют и работают, когда не используются в этом классе.

Я перепробовал так много вещей, что к тому времени здесь может быть что-то странное, неправильное …

-1

Решение

Ваш вопрос немного сбивает с толку, но, похоже, вы столкнулись с неправильным пониманием того, как работают пространства имен.

это

Предупреждение PHP: оператор использования с несоставным именем ‘Socket’ не действует в /home/michael/PhpstormProjects/preisopt/app/libraries/Socket-Server.php в строке 5

PHP говорит вам, что заявление

use Socket;

Ничего не делает use выражение позволяет вам сказать PHP «Эй, импортируйте этот класс из этого другого пространства имен в текущее пространство имен». Когда ты сказал use Socketэтот класс Socket уже находится в текущем пространстве имен. Если вы пытаетесь использовать глобальный класс \Socket в другом классе, вы хотите сказать

use \Socket;

Если вы пытаетесь использовать класс в другом пространстве имен, базовое имя которого Socket, ты хочешь сказать

use Namespace\Path\To\Socket
//or
use \Top\Level\Namespace\Path\To\Socket

в зависимости от текущего пространства имен файла.

Ошибки

Неустранимая ошибка PHP: класс ‘Eloquent’ не найден в /home/michael/PhpstormProjects/preisopt/app/libraries/Socket.php в строке 15

Неустранимая ошибка PHP: класс «Пользователь» не найден в /home/michael/PhpstormProjects/preisopt/app/libraries/Socket.php в строке 35

Make звучит так, как будто вы пытаетесь использовать глобальные классы \Eloquent а также \User внутри пространства имен Вам нужно будет либо добавить

use \Eloquent;
use \User;

в верхней части файла или ссылаться на эти глобальные классы с обратной косой чертой в файле, когда вы их используете.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]