Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Class name must be a valid object or a string

Como faço para resolver esse problema ao tentar criar a classe BaseController?

4 respostas

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; } }

solução!

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!!!!