Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
fala pessoalll,
estou com uma dúvida com relação ao uso de Herença,
imaginem a seguinte situação:
Classe Abstrata Usuário
Classe UsuárioSimples herda a classe Usuário
Classe UsuárioAvançado herda a classe Usuário
como a classe Usuário é abstrata, não pode ser instanciada, porém eu queria listar na página todos os usuários, tanto os simples como os avançados.
Eu deveria cria um método estático na classe Usuário, para listar todos os usuários?
o que vocês recomendam?
será q eh gambiarra o que eu to fazendo?
Classe que você se refere é REALMENTE Class do PHP ou é outra coisa??
tipo é isso???:
<?php
class Usuario{
public function __construct(){
..........
}
}
class Simples extends Usuario {
public function __construct(){
..........
}
}
class Avancados extends Usuario {
public function __construct(){
..........
}
}
?>A se você quer listar tudo você pode criar tudo em uma classe só e chamar tres funçoes diferentes:
<?php
class Usuario{
public function __construct(){
/*Chama funções e seta variaveis necessarias*/
}
public function TODOS(){
/*lista todos usuarios*/
}
public function AVANCADOS(){
/*lista usuarios avançados*/
}
public function SIMPLES(){
/*lista usuarios simples*/
}
}
/Chamando TODOS/
$c = new Usuario();
$c->TODOS();
/Chamando só avançados/
$c = new Usuario();
$c->AVANCADOS();
/Chamando só SIMPLES/
$c = new Usuario();
$c->SIMPLES();
?>Você pode criar uma função estática para chamar todos... só que acho que você deveria definir direto na classe mãe, não sei se classes abstratas aceitam definir métodos estáticos, se for o caso seria melhor fazer classe normal...
OU, faça uma função que busque os usuários todos e organize-os em uma array de objetos UsuárioSimples e UsuárioAvançado...
Existem inúmeras possibilidades... veja uma que mais lhe agrade e tente implementá-la.
então...
é classe do php mesmo...
na verdade, indifere da linguagem..é mais uma dúvida referente a poo...
eu construi um método estático na classe abstrata e funciono certinho..
preferi fazer isso do que instanciar as outras classes filhas etc..
soh q ainda não estou achando que é a melhor forma...
Mesmo sendo com Classes filhas se vocÊ seguir a minha ideia de criar uma TERCEIRA opção a de "TODOS". E nas opções Simples e Avançados filtraria.
nao entendi bem o que pretende fazer ou como vai utilizar mas talvez seja ocaso de usar INTERFACE
http://www.php.net/manual/pt_BR/language.oop5.abstract.php
senão, algo simples como sugeriram
será q eh gambiarra o que eu to fazendo?