How do I get a data from a class that was set in another class?

0

I have a question in my application. I would like to retrieve a data from one class that has been set to another. But when I do the data recovery it returns null.

Here is my object

class geraHash {
private $codigo;

//Aqui é o encapsulamento dos dados
public function setCodigo($codigo){
   $this -> codigo = $codigo;
}
public function getCodigo(){
   return $this->codigo;
}

//Aqui é o método que gera o código de verificação
public function GeraCodigo($qtd){ 

    $Caracteres = 'ABCDEFGHIJKLMOPQRSTUVXWYZ0123456789'; 
    $QuantidadeCaracteres = strlen($Caracteres); 
    $QuantidadeCaracteres--; 

    $Hash=NULL; 
    for($x=1; $x <= $qtd; $x++){ 
        $Posicao = rand(0,$QuantidadeCaracteres); 
        $Hash .= substr($Caracteres,$Posicao,1); 
    } 

    return $Hash; 
}

//Aqui é o método que faz a verificacao e onde eu gostaria de obter o dado setado
public function VerificaCod($cod) {
    $codVerificacao = $this->getCodigo();
    //if ($cod === $codVerificacao){
        echo $codVerificacao, $cod;
        return TRUE;
    //}

}

}

Then there is another class where I send the email to the email and seto the data in my object.

<?php
 include 'geraHash.php';

 class loginDAO {

 public function recuperaSenha(loginVO $login){

    $mysqli = new mysqli("localhost", "root", "", "bdMeuBanco");
    $stmt = $mysqli ->prepare("SELECT emailLogin FROM tblLogin WHERE emailLogin = ?");
    $stmt ->bind_param("s", $p1);

    $p1 = $login ->getEmailLogin();

    $stmt ->execute();

    if($stmt ->num_rows >=0){
        $geraHash = new geraHash(); //Aqui ocorre a instancia de um novo objeto
        $cod = $geraHash ->GeraCodigo(6); // Aqui eu chamo o método que gera o cod que vai ser passado na msgm via email
        $geraHash->setCodigo($cod); //Aqui eu seto o dado no objeto



        $arquivo = "<html><head><meta charset='utf-8'></head><style type='text/css'> body{font-family: monospace;color: darkgray;font-size: 16px;width: 500px;}h3{color: black;}</style><body>Enviamos esse código para que possa redefinir sua senha.<br><h3>$cod</h3> <br>Se você não solicitou a redefinição de sua senha ignore este email!</body></html>";
        $destino = $login->getEmailLogin();
        $assunto = "Redefinição de senha";

        require_once('class.phpmailer.php'); //chama a classe de onde você a colocou.

        $mail = new PHPMailer(); // instancia a classe PHPMailer

        $mail->IsSMTP();

        //configuração do gmail
        $mail->Port = '465'; //porta usada pelo gmail.
        $mail->Host = 'smtp.gmail.com'; 
        $mail->IsHTML(true); 
        $mail->Mailer = 'smtp'; 
        $mail->SMTPSecure = 'ssl';

        //configuração do usuário do gmail
        $mail->SMTPAuth = true; 
        $mail->Username = '[email protected]'; // usuario gmail.   
        $mail->Password = 'password'; // senha do email.

        $mail->SingleTo = true; 

        // configuração do email a ver enviado.
        $mail->From = "[email protected]"; 
        $mail->FromName = "meu dominio"; 

        $mail->addAddress($destino); // email do destinatario.

        $mail->Subject = $assunto; 
        $mail->Body = $arquivo;
        $mail ->CharSet = "UTF-8";


        if(!$mail->Send()){
            echo "Erro ao enviar Email:" . $mail->ErrorInfo;
        }

        return TRUE;
    }

}

}

And my last file gets the data that was passed via email to do the verification

<?php
include 'loginDAO.php';

$loginDAO = new loginDAO();

if(NULL !== filter_input(INPUT_POST, "btnConfirmar2")){ //Aqui verifica se o botão existe para receber uma acao

    $geraHash = new geraHash();
    $cod = filter_input(INPUT_POST, "userCodPass");
    if($geraHash ->VerificaCod($cod)){
        echo "Funcionou";
    }
}

I came to the conclusion that the object is not getting the value because I'm instantiating the object twice in different classes. For this I would need to reuse the first instance, does anyone know how I can do this?

p.s: I already used global but I could not get a result.

    
asked by anonymous 17.04.2017 / 20:18

0 answers