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 

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

Tags: |

Seu computador está lento, travando ou dando tela azul? E toda vez que isso acontece você precisa gastar dinheiro com assistência técnica?

A verdade é que continuar sem esse conhecimento pode estar custando muito mais do que você imagina.

Você pode economizar centenas ou até milhares de reais ao longo do tempo fazendo você mesmo a manutenção dos seus computadores. E, se decidir prestar serviços, esse conhecimento também pode se transformar em uma fonte de renda, que pode variar de R$2.000 a R$5.000 por mês ou mais.

Tudo isso com aulas práticas, objetivas e focadas no que realmente funciona, sem enrolação:

✔ Resolver seus próprios problemas sem depender de ninguém
✔ Ganhar dinheiro com manutenção e suporte técnico
✔ Ou até entrar de vez no mercado de TI

A decisão é sua: continuar gastando dinheiro sempre que o computador apresentar um problema ou aprender uma habilidade que pode fazer você economizar e até gerar uma nova fonte de renda.

👉 CLIQUE AQUI AGORA e veja todos os detalhes antes que essa oportunidade passe:

Super Técnico 2.0

Sobre o Autor

Benedito Silva Júnior
Benedito Silva Júnior

Bacharel em Sistemas de Informação e 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 *