Inclusion of method in own class

Asked

Viewed 37 times

1

Imagine a sistema OO which has at least 2 classes:

Admins.php
Clientes.php

In real life, that is, in the system, customers cannot register. In this case, the function of registering the Customer is the administrador.

The question is: where should I include the método cadastrarCliente($Cliente)?

In Admins Class or Clients Class?

I’m doing like this:

Php clients.

 class Clientes {

     private $idCliente;
     private $nome;
     private $documento;
     private $senha;
     private $endereco;
     private $numero;
     private $complemento;
     private $bairro;
     private $estado;
     private $cidade;
     private $cep;
     private $email;
     private $telefone;
     private $celular;
     private $bloqueado;

     public function __construct( 
         $_nome,  
         $_documento, 
         $_senha, 
         $_endereco, 
         $_numero, 
         $_complemento, 
         $_bairro, 
         $_estado, 
         $_cidade, 
         $_cep, 
         $_email, 
         $_telefone, 
         $_celular, 
         $_bloqueado
    )
     {
         $this->nome = $_nome;
         $this->documento = $_documento;
         $this->senha = $_senha;
         $this->endereco = $_endereco;
         $this->numero = $_numero;
         $this->complemento = $_complemento;
         $this->bairro = $_bairro;
         $this->estado = $_estado;
         $this->cidade = $_cidade;
         $this->cep = $_cep;
         $this->email = $_email;
         $this->telefone = $_telefone;
         $this->celular = $_celular;
         $this->bloqueado = $_bloqueado;
     }

     public function setIdCliente ($_idCliente){
         $this->idCliente = $_idCliente;
     }

    public function getIdCliente () {
        return $this->idCliente;
    }

    public function getNome () {
        return $this->nome;
    }

    public function getDocumento () {
        return $this->documento;
    }

    public function getSenha () {
        return $this->senha;
    }

    public function getEndereco () {
        return $this->endereco;
    }

    public function getNumero () {
        return $this->numero;
    }

    public function getComplemento () {
        return $this->complemento;
    }

    public function getBairro () {
        return $this->bairro;
    }

    public function getEstado () {
        return $this->estado;
    }

    public function getCidade () {
        return $this->cidade;
    }

    public function getCep () {
        return $this->cep;
    }

    public function getEmail () {
        return $this->email;
    }

    public function getTelefone () {
        return $this->telefone;
    }

    public function getCelular () {
        return $this->celular;
    }

    public function getBloqueado () {
        return $this->bloqueado;
    }

}

Clientesdao.php

 class ClientesDao {

     private $conexao;

     public function __construct ($_conexao) {      
         $this->conexao = $_conexao;
     }

     public function bloquear ($idCliente, $bloqueio) {      

         $string = "UPDATE clientes SET bloqueado = '".$bloqueio."' WHERE idCliente = ".$idCliente;

         $this->conexao->query($string);

     }

     public function excluir ($idCliente) {      

         $string = "DELETE FROM clientes WHERE idCliente = ".$idCliente;

         $this->conexao->query($string);

     }

     public function cadastrar ($cliente) {      

         $string = "INSERT INTO clientes (nome, documento, senha, endereco, numero, complemento, bairro, estado, cidade, cep, email, telefone, celular, bloqueado) 
                    VALUES (
                       '".$cliente->getNome()."',
                       '".$cliente->getDocumento()."',
                       '".$cliente->getSenha()."',
                       '".$cliente->getEndereco()."',
                       '".$cliente->getNumero()."',
                       '".$cliente->getComplemento()."',
                       '".$cliente->getBairro()."',
                       '".$cliente->getEstado()."',
                       '".$cliente->getCidade()."',
                       '".$cliente->getCep()."',
                       '".$cliente->getEmail()."',
                       '".$cliente->getTelefone()."',
                       '".$cliente->getCelular()."',
                       '".$cliente->getBloqueado()."'
                       )";

         $this->conexao->query($string);

     }

     public function ultimoIdCadastrado () {         
         return $this->conexao->insert_id;
     }

     public function editar ($cliente) {         

         $string = "UPDATE clientes 
                    SET 
                      nome = '".$cliente->getNome()."', 
                      documento = '".$cliente->getDocumento()."', 
                      senha = '".$cliente->getSenha()."', 
                      endereco = '".$cliente->getEndereco()."', 
                      numero = '".$cliente->getNumero()."',
                      complemento = '".$cliente->getComplemento()."', 
                      bairro = '".$cliente->getBairro()."', 
                      estado = '".$cliente->getEstado()."', 
                      cidade = '".$cliente->getCidade()."', 
                      cep = '".$cliente->getCep()."', 
                      email = '".$cliente->getEmail()."', 
                      telefone = '".$cliente->getTelefone()."', 
                      celular = '".$cliente->getCelular()."', 
                      bloqueado = '".$cliente->getBloqueado()."' 
                    WHERE 
                      idCliente = ".$cliente->getIdCliente();

         $this->conexao->query($string);
     }


     public function alteraSenha ($senha, $idCliente) {
         $string = "UPDATE clientes SET senha='".$senha."' WHERE idCliente = ".$idCliente;
         $this->conexao->query($string);
     }

     public function pesquisaClienteId($idCliente) {
         $cliente = null;           

         $string = "SELECT idCliente, nome, documento, senha, endereco, numero, complemento, bairro, estado, cidade, cep, email, telefone, celular, bloqueado 
                    FROM clientes 
                    WHERE idCliente = ".$idCliente;

         $registros = $this->conexao->query($string);
         $quantasLinhas = $registros->num_rows;      

         if ($quantasLinhas > 0)
         {

             list ($idCliente, $nome, $documento, $senha, $endereco, $numero, $complemento, $bairro, $estado, $cidade, $cep, $email, $telefone, $celular, $bloqueado) = $registros->fetch_row();             

             $cliente = new Clientes($nome, $documento, $senha, $endereco, $numero, $complemento, $bairro, $estado, $cidade, $cep, $email, $telefone, $celular, $bloqueado);                     
             $cliente->setIdCliente($idCliente);
         }

         return $cliente;

     }

     public function pesquisaClienteDocumento($doc) {

         $string = "SELECT idCliente
                    FROM clientes 
                    WHERE documento = '".$doc."'";

         $registros = $this->conexao->query($string);
         $quantasLinhas = $registros->num_rows;      

         if ($quantasLinhas > 0)
         {
             return true;
         }

         return false;

     }

     public function pesquisaClienteEmail($email) {

         $string = "SELECT idCliente
                    FROM clientes 
                    WHERE email = '".$email."'";

         $registros = $this->conexao->query($string);
         $quantasLinhas = $registros->num_rows;      

         if ($quantasLinhas > 0)
         {
             return true;
         }

         return false;

     }

     public function pesquisaClienteNome($nomeCliente) {
         $cliente = null;           

         $string = "SELECT idCliente, nome, documento, senha, endereco, numero, complemento, bairro, estado, cidade, cep, email, telefone, celular, bloqueado 
                    FROM clientes 
                    WHERE nome = '".$nomeCliente."'";

         $registros = $this->conexao->query($string);
         $quantasLinhas = $registros->num_rows;      

         if ($quantasLinhas > 0)
         {

             list ($idCliente, $nome, $documento, $senha, $endereco, $numero, $complemento, $bairro, $estado, $cidade, $cep, $email, $telefone, $celular, $bloqueado) = $registros->fetch_row();
             $cliente = new Clientes($nome, $documento, $senha, $endereco, $numero, $complemento, $bairro, $estado, $cidade, $cep, $email, $telefone, $celular, $bloqueado);                     
             $cliente->setIdCliente($idCliente);
         }

         return $cliente;

     }

     public function pesquisaNomeCliente($idCliente) {
         $cliente = null;           

         $string = "SELECT nome FROM clientes WHERE idCliente = ".$idCliente;

         $registros = $this->conexao->query($string);
         $quantasLinhas = $registros->num_rows;      

         if ($quantasLinhas > 0)
         {

             list ($nome) = $registros->fetch_row();
             $cliente = $nome;
         }

         return $cliente;

     }

     public function pesquisaClientes() {
         $Clientes = null;           

         $string = "SELECT idCliente, nome, documento, senha, endereco, numero, complemento, bairro, estado, cidade, cep, email, telefone, celular, bloqueado FROM clientes";

         $registros = $this->conexao->query($string);
         $quantasLinhas = $registros->num_rows; 

         if ($quantasLinhas > 0) {

             while (list ($idCliente, $nome, $documento, $senha, $endereco, $numero, $complemento, $bairro, $estado, $cidade, $cep, $email, $telefone, $celular, $bloqueado) = $registros->fetch_row()) {

                 $cliente = new Clientes($nome, $documento, $senha, $endereco, $numero, $complemento, $bairro, $estado, $cep, $cidade, $email, $telefone, $celular, $bloqueado);                     
                 $cliente->setIdCliente($idCliente);

                 $Clientes[] = $cliente;
             }
         }

         return $Clientes;

     }
 }

2 answers

0

Carlos, register Customer($Client) within the admins class makes sense imagining that it is a page or action of the Admins controller. It would also be an organization more linked to diagrama de casos de uso of the UML standard, where this method would be exclusive to the Administrator actor.

0

Methods describe behaviors of objects that possess it. If the client registration behavior is inherent to the administrator, the administrator should have the method. Despite this, it is interesting to decouple the business rules of POJOS. The ideal would be for you to have another object to manage customer registration (e.g. Processors). This processor would be activated by the administrator, thus ensuring that the registration is done only by them.

  • I added the codes to make it clearer.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.