Como faço para resolver esse problema ao tentar criar a classe BaseController?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Como faço para resolver esse problema ao tentar criar a classe BaseController?
Olá Angelo,
Como você está criando essa classe? Se possível compartilha essa parte do código.
Fico no aguardo!
Boa tarde Lucas,
A classe abaixo é a minha classe Base.
namespace App\Http\Controllers;
use Illuminate\Http\Request;
abstract class BaseController { protected $classe;
public function index()
{
return $this->classe::all();
}
public function store(Request $request)
{
return response()->json($this->classe::create($request->all()), 201);
}
public function show(int $id)
{
$recurso = $this->classe::find($id);
if(is_null($recurso)){
return response()->json('', 204);
}
return response()->json($recurso, 201);
}
public function update(int $id, Request $request)
{
$recurso = $this->classe::find($id);
if(is_null($recurso)){
return response()->json([
'erro' => 'Recurso não encontrado'
], 404);
}
$recurso->fill($request->all());
$recurso->save();
return response()->json($recurso, 201);
}
public function destroy(int $id)
{
$quantRecursosRemovidos = $this->classe::destroy($id);
if($quantRecursosRemovidos === 0){
return response()->json([
'erro' => 'Recurso não encontrado'
], 404);
}
return response()->json('', 204);
}}
Essa aqui é a classe na qual eu herdo e tento que tenha o mesmo comportamento de antes...
<?php
namespace App\Http\Controllers\Academico;
use App\Http\Controllers\BaseController; use App\PeriodoLetivo;
class PeriodoLetivoController extends BaseController { public function __constructor() { $this->classe = PeriodoLetivo::class; } }
Opa Angelo, o erro é apenas um detalhe no nome do construtor, na sua classe está __constructor mas o correto é __construct
Por estar com um nome diferente do esperado pelo php o construtor não vai ser executado e assim o $classe vai ser uma variável vazia.
É só corrigir isso que deve funcionar, qualquer dúvida é só falar!
Muito obrigado Lucas!!!!