Guia Carreira Programador PHP
5 minutos

Como criar minha primeira classe em PHP

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (17)  (0)

Neste conteúdo você aprenderá a criar sua primeira classe (PHP Class) na linguagem PHP. Aprenda também a usar herança e interfaces, bem como métodos, atributos e propriedades.

Herança e interface em PHP

A definição de classes na linguagem PHP é feita com uma sintaxe simples, de fácil compreensão e nos permite criar atributos, propriedades e métodos. Por exemplo, na Figura 1 temos a representação de uma classe chamada Produto com seus campos e logo em seguida vemos como essa classe seria implementada em PHP:

Figura 1. Diagrama da classe Produto
Figura 1. Diagrama da classe Produto
  <?php
   
  class Produto {
   
     private $codigo;
     private $nome;
     private $preco;
   
     public function getCodigo()
     {
         return $this->codigo;
     }
     public function setCodigo($codigo)
     {
         $this->codigo = $codigo;
     }
     public function getNome()
     {
         return $this->nome;
     }
     public function setNome($nome)
     {
         $this->nome = $nome;
     }
     public function getPreco()
     {
         return $this->preco;
     }
     public function setPreco($preco)
     {
         $this->preco = $preco;
     }
  }

Linha 3: Nessa linha temos os seguintes termos: class define que estamos criando uma classe; e Produto, que é o nome da classe.

Linhas 5 a 7: Aqui temos o que chamamos de atributos. São variáveis privadas que representam as características da classe. Note o modificador de acesso private, o tipo e o nome de cada atributo;

Linhas 9 a 33: Já aqui temos as propriedades da classe (também chamadas de getters e setters), que são públicas e encapsulam os atributos. Observe que criamos um método para modificar os valores e outro para retornar. O get retorna o atributo correspondente e o set recebe um valor e o repassa para o atributo.

Herança

Herança é um tipo de relacionamento muito comum na orientação a objetos e ocorre quando uma classe descende da outra e herda suas características e comportamentos, além de implementar os seus próprios. Por exemplo, considere o diagrama de classes da Figura 2 em que Assinatura herda de Produto.

Diagrama classes com Assinatura herdando de Produto
Figura 2. Diagrama classes com Assinatura herdando de Produto

Nesse cenário a classe Assinatura herda de Produto e também define uma propriedade e método próprios. Em PHP essa classe seria implementada da seguinte forma:

<?php
   
  class Assinatura extends Produto {
   
     private $dataExpiracao;
   
     public function getDataExpiracao()
     {
         return $this->dataExpiracao;
     }
     public function setDataExpiracao($dataExpiracao)
     {
         $this->dataExpiracao = new \DateTime($dataExpiracao);
     }
     public function getTempoRestante()
     {
         return $this->dataExpiracao->diff(new \DateTime());
     }
  }

Linha 2: A herança em PHP é representada pela palavra reservada extends, seguida do nome da classe que está sendo herdada. Nesse caso, Assinatura herda de Produto;

Linhas 6 a 14: Nesse trecho temos o atributo e propriedade que dizem respeito apenas à assinatura;

Linhas 8 a 11: Aqui temos o método getTempoRestante da assinatura, que retorna um DateInterval representando o tempo que falta até a assinatura expirar;

Interfaces

Na Orientação a Objetos as interfaces funcionam como contratos, ou seja, elas definem comportamentos que devem ser cumpridos pelas classes. Quando uma classe atende a uma interface, dizemos que ela implementa essa interface. Na Figura 3 temos um diagrama que mostra uma nova configuração para as classes que representamos anteriormente:

Diagrama de classes com interface
Figura 3. Diagrama de classes com interface

Nesse cenário a interface Expiravel define que toda classe que representa um produto cuja data de expiração ou validade chega ao fim (expira) deve implementar o método getTempoRestante. Por exemplo, se tivéssemos outra classe Voucher ou Desconto, por exemplo, ela poderia implementar essa classe e definir o comportamento desse método.

Em PHP a interface Expiravel seria escrita da seguinte forma:

  <?php
   
  interface Expiravel
  {
     public function getTempoRestante();
  }

Linha 3: Note o uso da palavra reservada interface e também no nome da interface: Expiravel.

Linha 5: As interfaces definem apenas a assinatura do método, não seu comportamento. A implementação do método fica por conta da classe que implementa essa interface.

Agora, considerando que a classe Assinatura implementa essa interface, seu código seria modificado da seguinte forma:

<?php
   
  class Assinatura extends Produto implements Expiravel {
   
     private $dataExpiracao;
   
     public function getDataExpiracao()
     {
         return $this->dataExpiracao;
     }
     public function setDataExpiracao($dataExpiracao)
     {
         $this->dataExpiracao = new \DateTime($dataExpiracao);
     }
     public function getTempoRestante()
     {
         return $this->dataExpiracao->diff(new \DateTime());
     }
  }

Linha 3: A sintaxe para implementar uma interface em PHP é a palavra reservada implements e em seguida o nome da Interface;

Linhas 5 a 18: Como a classe implementa a interface Expiravel, ela deve obrigatoriamente definir o comportamento do método getTempoRestante.

A partir desses conceitos podemos criar diversas outras classes e interfaces, com seus atributos, propriedades e métodos específicos.

Sugestão de conteúdo

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?