Métodos em PHP

Métodos de uma classe são as funções que a mesma tem à sua disposição para executar, definindo seu comportamento. Os métodos, assim como os atributos, podem ser de vários tipos. Neste post veja métodos em PHP.

Private: Indica que o método em questão somente pode ser invocado de dentro da classe em questão. Se códigos externos tentarem via $objeto -> metodo, um erro ocorrerá;

Public: Indica que o método pode ser acessado a partir de códigos externos;

Protected: Indica que o método pode ser acessado somente de modo interno por sua própria classe, ou por subclasses;

Static: Indica que o método em questão é único para todas as referências da classe em questão, sendo sua exceção realizada sem depender de dados concretos do objeto.

Em outras palavras, seu acesso não depende de uma instância do objeto, pois não há relação com suas variáveis não-estáticas.

 class Documento {
  private $numero; //Atributo privado
  
  //Método público get para retornar um valor
  public function getNumero() {
   return $this->numero;
  }
  
  //Método set para atribuir um valor
  public function setNumero($numero) {
   
   // "::" acessa métodos estáticos ("->" acessa métodos normais)
   //Armazena o retorno do método validarCPF na variável $resultado 
   $resultado = Documento::validarCPF($numero);
   
   //O método validarCPF retorna true (CPF válido) ou false (CPF inválido) 	  
   if($resultado === false) {
    throw new Exception("O CPF informado não é válido");
   }
   $this->numero = $numero;
  }
  
  //Método estático validarCPF
  public static function validarCPF($cpf):bool { //Tipo de retorno "bool" (true ou false)
    if(empty($cpf)) {
        return false;
    }
 
    $cpf = preg_match('/[0-9]/', $cpf)?$cpf:0;
    $cpf = str_pad($cpf, 11, '0', STR_PAD_LEFT);     
    
    if (strlen($cpf) != 11) {
        echo "length";
        return false;
    } 
    
    else if ($cpf == '00000000000' || 
        $cpf == '11111111111' || 
        $cpf == '22222222222' || 
        $cpf == '33333333333' || 
        $cpf == '44444444444' || 
        $cpf == '55555555555' || 
        $cpf == '66666666666' || 
        $cpf == '77777777777' || 
        $cpf == '88888888888' || 
        $cpf == '99999999999') {
        return false;

     } else {   
         
        for ($t = 9; $t < 11; $t++) {
             
            for ($d = 0, $c = 0; $c < $t; $c++) {
                $d += $cpf{$c} * (($t + 1) - $c);
            }
            $d = ((10 * $d) % 11) % 10;
            if ($cpf{$c} != $d) {
                return false;
            }
        } 
        return true;
    }
  }
  
  //É possível utilizar o método setNumero() instanciando a classe (objeto) ou diretamente (estaticamente):
  
 //Utilizando um objeto: 
 $cpf = new Documento(); 
 $cpf->setNumero("12345678912");
 
 //Diretamente através do método estático:
 var_dump(Documento::validarCPF("12345678912")); 
 } 

O que diferencia um método de classe de um método estático é que este pode ser acessado sem ser instanciado.

Esta técnica é útil quando um método é muito usado, economizando linhas de códigos que seriam utilizadas para criar as instâncias.

Métodos construtores (métodos mágicos)

Um Método construtor é uma função especial que é sempre executada quando um objeto da classe é instanciado.

Os métodos mágicos são métodos previamente definidos de uma classe que tem funcionalidades específicas. São precedidos por “__”:

 class Endereco {
  private $logradouro;
  private $numero;
  private $cidade;
  
  //Método construtor (método mágico)
  public function __construct($x, $y, $z) {
   $this->logradouro = $x;
   $this->numero = $y;
   $this->cidade = $z;
  } 
  
  //Método destrutor (finaliza objeto - limpa a memória)
  public function __destruct() {
   var_dump("Destruir");
  }   
  
  //Método para converter objetos em strings
  public function __toString() {
   return $this->logradouro. " - ".$this->numero." - ". $this->cidade;
  }
 } 
 
 //Instância da classe passando os parâmetros juntos
 $meuEndereco = new Endereco("Rua da Fortuna", "900", "Campinas");
 
 echo $meuEndereco;
 var_dump($meuEndereco);
 unset($meuEndereco); //Destrói a variável $meuEndereco 
QUER APRENDER PHP ORIENTADO A OBJETOS OU APERFEIÇOAR O QUE JÁ SABE?

Então conheça o curso online que já ajudou milhares de pessoas a aprender a programar e desenvolver seus próprios projetos do ZERO e usando orientação a objetos de uma forma fácil de entender.

CLIQUE NA IMAGEM ABAIXO E SAIBA MAIS:

CLIQUE AQUI E SAIBA MAIS

Dúvidas ou sugestões? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits

Tags: | | |

Sobre o Autor

Benedito Silva Júnior
Benedito Silva Júnior

Bacharel em Sistemas de Informação pelo Instituto Paulista de Pesquisa e Ensino IPEP. Apaixonado por tecnologias e games do tempo da vovó!

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *