2014-10-13 2 views
0

Я построил API в Laravel, версионируются следующим образом:Как «импортировать» пространства имен в Laravel?

/controllers/api/v1/CommentController.php 
/controllers/api/v2/CommentController.php 

В моих маршрутов я называю правильные контроллеры, как так:

Route::resource('notification', 'api\v2\CommentController'); 

Это работает, но так как я использую пространство имен в моих контроллерах я должен использовать \ подход, чтобы найти такие классы, как \ Response в корневом пространстве имен?

namespace api\v1; 
class NotificationController extends \BaseController { 
    public function index()() 
    { 
     return \Response::json({}); 
    } 
} 

Есть ли способ избежать этой обратной косой черты и использовать правильное пространство имен? Я пробовал использовать use \App;, но без результата

ответ

1

U необходимо добавить «use Response;» к вашему коду.

<?php namespace api\v1; 
use Response; 
class CommentController extends \BaseController { 
public function index() 
{ 
    return Response::json('hello'); 
} 
} 
+0

Спасибо. Должен ли я делать это для каждого класса, который я использую, как и все мои модели, или существует «базовое» пространство имен, которое я могу использовать как-то вроде «use \» – Jorre

+0

. Я не думаю, что есть способ добавить «базовое» пространство имен как и хотите. Единственное, что я могу сказать: если вы используете Response или любой класс модели внутри вашего пространства имен \ api \ v1 \, это будет интерпретироваться как класс \ api \ v1 \ Response. Поскольку вы не хотите иметь предыдущее пространство имен, вы используете команду \ before Response как: \ Response: :() или использовать инструкцию использования высшего класса, как использовать Response; –

+1

Если BaseController находится в том же пространстве имен, то есть это api \ v1 \ BaseController, вы можете также опустить косую черту. – Dachande663

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