I'm using FETCH_CLASS to map classes, but when for example one class inherits another, FETCH_CLASS does not find the attributes of the parent class and ends up creating new attributes
class UsuarioVO {
private $id;
private $nome;
private $cidade;
private $estado;
private $bairro;
private $cep;
private $endereco;
private $cpf;
private $email;
private $senha;
function __construct() {
}
function getId() {
return $this->id;
}
function setId($id) {
$this->id = $id;
}
function getNome() {
return $this->nome;
}
function getCidade() {
return $this->cidade;
}
function getEstado() {
return $this->estado;
}
function getBairro() {
return $this->bairro;
}
function getCep() {
return $this->cep;
}
function getEndereco() {
return $this->endereco;
}
function getCpf() {
return $this->cpf;
}
function getEmail() {
return $this->email;
}
function getSenha() {
return $this->senha;
}
function setNome($nome) {
$this->nome = $nome;
}
function setCidade($cidade) {
$this->cidade = $cidade;
}
function setEstado($estado) {
$this->estado = $estado;
}
function setBairro($bairro) {
$this->bairro = $bairro;
}
function setCep($cep) {
$this->cep = $cep;
}
function setEndereco($endereco) {
$this->endereco = $endereco;
}
function setCpf($cpf) {
$this->cpf = $cpf;
}
function setEmail($email) {
$this->email = $email;
}
function setSenha($senha) {
$this->senha = $senha;
}
}
Class AlunoVO extends UsuarioVO {
private $curso;
private $turma;
private $matricula;
private $desconto_mensalidade;
private $dia_vencimento;
function __construct() {
//parent::__construct();
}
function getDia_vencimento() {
return $this->dia_vencimento;
}
function setDia_vencimento($dia_vencimento) {
$this->dia_vencimento = $dia_vencimento;
}
function getCurso() {
return $this->curso;
}
function getTurma() {
return $this->turma;
}
function getMatricula() {
return $this->matricula;
}
function getDesconto_mensalidade() {
return $this->desconto_mensalidade;
}
function setCurso($curso) {
$this->curso = $curso;
}
function setTurma($turma) {
$this->turma = $turma;
}
function setMatricula($matricula) {
$this->matricula = $matricula;
}
function setDesconto_mensalidade($desconto_mensalidade) {
$this->desconto_mensalidade = $desconto_mensalidade;
}
}
The object looks like this:
(
[curso:AlunoVO:private] => Pedagogia
[turma:AlunoVO:private] =>
[matricula:AlunoVO:private] =>
[desconto_mensalidade:AlunoVO:private] =>
[dia_vencimento:AlunoVO:private] =>
[id:UsuarioVO:private] =>
[nome:UsuarioVO:private] =>
[cidade:UsuarioVO:private] =>
[estado:UsuarioVO:private] =>
[bairro:UsuarioVO:private] =>
[cep:UsuarioVO:private] =>
[endereco:UsuarioVO:private] =>
[cpf:UsuarioVO:private] =>
[email:UsuarioVO:private] =>
[senha:UsuarioVO:private] =>
[id] => 2
[nome] => joão amaral da silva campos
[document_cpf] => 05469464550
)
How do I resolve this?
Method that makes use of classes:
function listarAlunos($curso = null) {
try {
if (!empty($curso)) {
$listar_alunos = $this->conexao->prepare("SELECT u.id, u.nome, c.nome AS curso, u.document_cpf FROM usuarios u, matriculas m, cursos c, polos p WHERE (m.aluno = u.id) AND (m.curso = c.id) AND (c.polo = p.id) AND m.curso = :curso");
$listar_alunos->bindValue(":curso", $curso);
} else {
$listar_alunos = $this->conexao->prepare("SELECT u.id, u.nome, c.nome AS curso, u.document_cpf FROM usuarios u, matriculas m, cursos c, polos p WHERE (m.aluno = u.id) AND (m.curso = c.id) AND (c.polo = p.id)");
}
if(!$listar_alunos->execute()){
throw new Exception($listar_alunos->errorInfo()[2]);
}
return $listar_alunos->fetchAll(PDO::FETCH_CLASS, "AlunoVO");
} catch (Exception $e) {
echo 'Error ao listar alunos -> '.$e->getMessage();
}
}