Values of the attributes of a duplicate object

0

I'm having the following problem, I have a class named Cliente with multiple attributes and a class named DAO_Cliente that returns a given client ( MySQL ). The problem is when I try to put the values in the attributes of that object, that is, when I set the $id and the $nome (only) for example all the attributes get value of NOME , just like if I set the $telefone1 attribute again all attributes have the value of TELEFONE . I'm using php4 .

The class structure below follows:

Class Cliente :

<?php
    include_once "endereco.php";

    class Cliente{
        public $id;
        public $nome;
        public $dataNasc;
        public $cpf;
        public $identidade;
        public $oEndereco;
        public $telefone1;
        public $telefone2;
        public $referencia;
        public $status;
        public $inscricaoEstadual;
        public $celular;
        public $email;
        public $dataVencimento;
        public $dataVisitaTecnica;
        public $valorMensalidade;
        public $regimeTributario;
        public $observacao;
        public $qtdeEcf;
        public $modelo;
        public $possuiNFe;

        function __construct() {
            $id = 0;
            $nome = '';
            $dataNasc = 0;
            $cpf = '';
            $identidade = '';
            $oEndereco = new Endereco();
            $telefone1 = '';
            $telefone2 = '';
            $referencia = '';
            $status = '';
            $inscricaoEstadual = '';
            $celular = '';
            $email = '';
            $dataVencimento = 0;
            $dataVisitaTecnica = 0;
            $valorMensalidade = 0;
            $regimeTributario = '';
            $observacao = '';
            $qtdeEcf = 0;
            $modelo = '';
            $possuiNFe = '';
        }
    }
?>

Class Dao_Cliente :

    <?php
    include_once "../conexao.php";
    include_once "../model/cliente.php";

    class DAO_Cliente{
        public function consultar($lcodCli){
            $lconexao = conexao::getInstance();
      $sql = "SELECT * FROM CLIENTES c WHERE c.codigo_cli = '".$lcodCli."'";
      $lconexao->$result = mysql_query($sql) or die("erro de consulta");        
      if ($consulta = mysql_fetch_array($lconexao->$result)){
        $auxCliente = new Cliente();
        $auxCliente->$id = $consulta[CODIGO_CLI];
        $auxCliente->$nome = $consulta[NOME];
        $auxCliente->$dataNasc = $consulta[NASCIMENTO];
        $auxCliente->$cpf = $consulta[CPF];
        $auxCliente->$identidade = $consulta[IDENTIDADE];
        $auxCliente->oEndereco->$logradouro = $consulta[ENDERECO];
        $auxCliente->oEndereco->$cep = $consulta[CEP];
        $auxCliente->oEndereco->$bairro = $consulta[BAIRRO];
        $auxCliente->oEndereco->$cidade = $consulta[CIDADE];
        $auxCliente->$telefone1 = $consulta[TELEFONE1];
        $auxCliente->$telefone2 = $consulta[TELEFONE2];
        $auxCliente->$referencia = $consulta[REFERENCIA];
        $auxCliente->$status = $consulta[STATUS];
        $auxCliente->$inscricaoEstadual = $consulta[Inscricao_Estadual];
        $auxCliente->$celular = $consulta[Celular];
        $auxCliente->$email = $consulta[Email];
        $auxCliente->$dataVencimento = $consulta[Dvencimento];
        $auxCliente->$dataVisitaTecnica = $consulta[DVisitaTecn];
        $auxCliente->$valorMensalidade = $consulta[Valor_da_mensalidade];
        $auxCliente->$regimeTributario = $consulta[Regime_tributario];
        $auxCliente->$observacao = $consulta[Observacao];
        $auxCliente->$qtdeEcf = $consulta[QUANT_ECFs_INST];
        $auxCliente->$modelo = $consulta[Modelo];
        $auxCliente->$possuiNFe = $consulta[NFe];

        mysql_free_result($lconexao->$result); 

                return $auxCliente;
      }

      return null;

    }
?>

And here's the call where attribute values are doubled:

if ($auxCliente != null){
      echo $auxCliente->$id." - ".$auxCliente->$nome." - ".$auxCliente->$dataNasc." - ".$auxCliente->$cpf." - ".$auxCliente->$identidade." - ".$auxCliente->oEndereco->$logradouro." - ".$auxCliente->oEndereco->$bairro." - ".$auxCliente->oEndereco->$cep." - ".$auxCliente->oEndereco->$cidade." - ".$auxCliente->$telefone1." - ".$auxCliente->$telefone2." - ".$auxCliente->$referencia." - ".$auxCliente->$status." - ".$auxCliente->$inscricaoEstadual." - ".$auxCliente->$celular." - ".$auxCliente->$email." - ".$auxCliente->$dataVencimento." - ".$auxCliente->$dataVisitaTecnica." - ".$auxCliente->$valorMensalidade." - ".$auxCliente->$regimeTributario." - ".$auxCliente->$observacao." - ".$auxCliente->$qtdeEcf." - ".$auxCliente->$modelo." - ".$auxCliente->$possuiNFe;
    }
    
asked by anonymous 03.02.2015 / 13:30

1 answer

2

I suggest that you add single quotes to all accesses in the bank array and also assign the values in the properties of the client object.

Change occurrences of:

$auxCliente->$id = $consulta[CODIGO_CLI];

To

$auxCliente->id = $consulta['CODIGO_CLI'];

------------^               ^----------^
cifrão removido             aspas adicionadas

When doing a partial test the following errors / warnings were returned:

  

Undefined variable: id in

and

  

Can not access empty property in

phpfiddle - example of errors.

The same goes for starting the attributes in the constructor, so you're basically creating a bunch of variables that have lost the value after the constructor is invoked.

Change:

function __construct() {
   $id = 0;

To:

function __construct() {
   $this->id = 0;
    
03.02.2015 / 13:52