2015-06-06 3 views
0

У меня есть следующие функции в одном из моих классов контроллеров:Laravel класс путаница

public function postToken(){ 
     $bridgedRequest = OAuth2\HttpFoundationBridge\Request::createFromRequest(Request::instance()); 
     $bridgedResponse = new OAuth2\HttpFoundationBridge\Response(); 

     $bridgedResponse = App::make('oauth2')->handleTokenRequest($bridgedRequest, $bridgedResponse); 

     return $bridgedResponse; 
} 

Это называют хорошо, но я получаю целую кучу «класса не обнаружено» ...

например:

<span class="exception_message">Class &#039;OAuth2&#039; not found</span> <span class="exception_message">Class &#039;App\Http\Controllers\Request&#039; not found</span> <span class="exception_message">Class &#039;App\Http\Controllers\OAuth2\HttpFoundationBridge\Request&#039; not found</span>

Как Я правильно импортирую эти классы? Я их в моем файле composer.json, и я уже выполнил composer update ...

Вот мой composer.json файл:

"require": { "laravel/framework": "5.0.*", "bshaffer/oauth2-server-php": "^1.7", "bshaffer/oauth2-server-httpfoundation-bridge": "^1.1" }

Я новичок в Laravel, так что я все еще привыкаю о том, как работают вещи ...

Я думаю, что это только простое утверждение use импорта, но я боюсь, что я очень застрял ...

ответ

2

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

Замените OAuth2\HttpFoundationBridge\Request на \OAuth2\HttpFoundationBridge\Request и посмотрите, как это происходит.

Вы также можете импортировать классы, интерфейсы и так далее с оператором use.

namespace App\Http\Controllers; 

use OAuth2\HttpFoundationBridge\Request as OAuth2Request; 

class YourController { ... } 

Теперь Request от OAuth2 поставщика доступен в YourController непосредственно с помощью OAuth2Request.

Что касается Request::instance(), вам необходимо как-то получить объект запроса для использования в методе postToken. Вы можете использовать инъекции метод, как вы работаете внутри контроллера:

public function postToken(\Namespace\To\Request $request) 
{ 
    $request->instance(); 
} 
+0

Я просто не могу заставить его работать ... Эта линия не может: '$ bridgedRequest = OAuth2 \ HttpFoundationBridge \ Request :: createFromRequest (Request :: instance()); 'Я включил эти пространства имен:' use OAuth2; 'и 'use OAuth2 \ HttpFoundationBridge;' – Eamorr

+1

Не помните, чтобы ввести другой экземпляр класса 'Request'? Вы также можете попробовать '\ Request :: instance()'. – ojrask

+0

Да, это работает. Спасибо! – Eamorr

Смежные вопросы