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