Como criar minha primeira classe em PHP

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.

#PraCegoVer - Transcrição dos Slides Na declaração de uma classe em PHP, o nome é declarado em: < ?php
public class Produto {
Os atributos são: private $codigo;
private $nome;
private $preco;
Os Getters e Setters são:
public getCodigo(){ return $this-> codigo; }
public setNome($nome) { $this-> nome= $nome; }

A herança em PHP é declarada da seguinte forma, onde as demais propriedades e métodos são da classe filha (Assinatura) e não da classe pai (Produto): <? php
class Assinatura extends Produto{ ...}

Declaramos uma interface da seguinte forma: <? php
interface Expiravel
{public function getTempoRestante();}, onde os métodos são somente assinatura

Implementamos uma interface da seguinte forma: <? php
class Assinatura implements Expiravel
{public function getTempoRestante()
{return $this->dataExpiracao->diff(new DateTime());}}

A seguir vemos um exemplo de herança e interface em PHP: <? php
class Assinatura extends Produto implements Expiravel
{public function getTempoRestante()
}return $this ->dataExpiracao->diff(new DateTime());}}, onde Assinatura é a classe, Produto é a classe pai e Expiravel é a interface
Ir para o código

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
<?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 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.

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 3: 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 5 a 18: Nesse trecho temos o atributo e propriedade que dizem respeito apenas à assinatura;

Linhas 15 a 18: 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:

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.

Artigos relacionados