No Laravel
quando se cria um Controller
já vem com extends Controller
e gostaria de saber, se caso for necessário criar uma classe ClienteVip
que extends Cliente
, qual seria o modo correto de fazer no Laravel.
Vale lembrar que Laravel
é um framework construído em PHP, então a premissa é que utilize a nomenclatura do PHP para implementar código Orientado a Objeto e também utilizando padrões de projeto.
A sua pergunta falta o contexto: Porque na impede essa herança class ClientVip extends Cliente
, mas, em qual momento vai fazer isso, porque vai fazer isso, qual a finalidade real porque nem sempre herança é a melhor solução?
Falta realmente o contexto, local que vai usar … e porque vai usar? Se for responder genericamente sim pode fazer se for necessário, o modo correto não posso responder não tem contexto.
A duvida é que quando o controller
é gerado ele já tem um extends
, seria possível adicionar outro?
Por Exemplo:
class ClienteVip extends Controller, Cliente
{
}
Aqui tem um contexto: A duvida é que quando o controller é gerado ele já tem um extends, seria possível adicionar outro?
Não, porque PHP só deixa um herança por classe, existe o mecanismo de traits
mais ai é o outro assunto.
Se precisar um herança antes do controller
faça assim:
Observação: nomenclatura Laravel por favor.
ClienteController
class ClienteController extends Controller
{
}
ClienteVipController
class ClienteVipController extends ClienteController
{
}
Um exemplo próprio, eu crie um BaseAdminController
, para que eu adicionasse alguns itens que seriam compartilhados em todo o projeto, exemplo:
class AdminBaseController extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
private $data = [];
public function __construct()
{
$this->setItem('routeName', Route::getCurrentRoute()->getName());
}
}
e depois utilize nos controllers
:
class IndexController extends AdminBaseController
{
public function __construct()
{
parent::__construct();
$this->setItem('title', 'Store');
$this->setItem('barTitle', 'Gerenciador');
}
}
assim seria um exemplo razoável e que não quebra o paradigma, mas, sim utiliza da melhor forma possivel
Eu ouvir falar que não é muito aconselhável utilizar herança em Laravel.
- Você ouviu falar que fazer POO em PHP não é muito aconselhável?
- Você ouviu falar mas, quais os motivos de não ser?
Veja qualquer linguagem com esse paradigma tem que tomar cuidado com Herança, mas, fazer herança consciente e saber o que está fazendo é sim útil.
O que eu sempre digo aqui no site, qual é o contexto, onde vai utilizar?
O exemplo passado ao amigo, não fere e é muito aconselhável quando você precisa de um padrão de controller
que foi o que aconteceu comigo, foi utilizado no projeto sem repetição de código e o meu controller
sabia quais eram até as suas rotas e sua views
, que seria informações que se repetem em todas os cadastros (CRUD) do projeto.
Há com certeza exageros, mas, não podemos descartar o uso de herança.