2015-05-06 3 views
0

У меня есть этот базовый контроллер:Как получить переменную с расширенного контроллера?

abstract class ApiController extends BaseController { 

use DispatchesCommands, ValidatesRequests; 
public function __construct() 
{ 
    try { 
     $user = JWTAuth::parseToken()->toUser(); 
    } catch (Exception $e) { 
     return Response::json(['error' => $e->getMessage()], HttpResponse::HTTP_UNAUTHORIZED); 
    } 
} 
} 

Как получить переменную $ пользователя в дочерних контроллеров? Если возможно, укажите примерный дочерний контроллер.

+0

Назначьте $ пользователю свойство экземпляра, затем получите доступ к нему из дочернего элемента с помощью this this-> propertyName. –

+0

$ Пользовательская переменная доступна только в контексте метода ApiController __construct. Чтобы он был доступен во всем классе и его расширениях, вы должны определить свойство $ user as class и использовать его как $ this-> user. То же самое можно получить в дочерних контроллерах (если свойство определено как общедоступное или защищенное). – medowlock

ответ

1

Прежде всего:

abstract class ApiController extends BaseController { 

    use DispatchesCommands, ValidatesRequests; 

    protected $user; // or public 
    public function __construct() 
    { 
    try { 
     $this->user = JWTAuth::parseToken()->toUser(); 
    } catch (Exception $e) { 
     return Response::json(['error' => $e->getMessage()], HttpResponse::HTTP_UNAUTHORIZED); 
    } 
    } 
} 

И потом:

class Ctrl extends ApiController 
{ 
    public function whatever() 
    { 
    echo $this->user; 
    } 
} 

И последнее, но не менее важное: http://www.phpfreaks.com/tutorial/oo-php-part-1-oop-in-full-effect

Счастливый кодирования!

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