PHP: Tutorial de POO : Classes e Objetos

0

Posted on : 15-05-2011 | By : Paulo H Oliveira | In : PHP

Para que um objeto seja criado é necessário definirmos sua estrutura. A estrutura de um objeto são todas as suas características e possíveis ações que também são baseadas na vida real. Por exemplo, um carro possui como características: Cor, ano, modelo, marca, etc, e possui como ações: andar, parar, dar ré, ligar e desligar.

1. Classe

Para definirmos essa estrutura criamos algo que chamamos de Classe. Ela é a estrutura fundamental para a criação de objetos. É como se fosse um template para os objetos, onde todas as suas características e ações são especificadas e com isso ser possível criar N objetos diferentes. Diferente no sentido de dados e informações armazenadas, mas sua estrutura (definida na classe) é sempre igual.

Dentro de uma classe todas as suas características são chamadas de propriedades, enquanto suas ações são chamadas de métodos.

Para se definir uma classe é preciso básicamente utilizar a seguinte estrutura:

<?php 
class Produto {  
// propriedades  
public $codigo; public $nome; public $preco;  
// métodos  
public function calculaDezporcento() {  
return $this ->preco * 0.10;
}
 
}
 
?>

Note que dentro de uma classe as propriedades são como variáveis e os métodos são como funções. A palavra chave public é utilizada para definir o tipo de acesso das propriedades e dos métodos (Veja o capitulo 5, Encapsulamento).

Usamos também a palavra chave $this, que serve para dentro de um método chamar uma propriedade da classe.

Para acessarmos as propriedades e os métodos dessa classe é simples. É só seguir o exemplo:

<?php
 
$produto = new Produto();
$produto->preco = 1200;
 
echo $produto-&gt;calculaDezPorcento(); // imprime 120
 
?>

2. Objeto

Uma vez que a classe é definida podemos então criar infinitos objetos baseados na estrutura de uma mesma classe. Dentro da nossa aplicação podemos ter 100 objetos Produto que possuem a mesma estrutura, mas com informações diferentes.

A criação de um objeto a partir de uma classe é chamada de instanciação, então todo objeto é uma instancia de alguma classe. Para criar um objeto utilizamos o operador new.

<?php
$produto = new Produto();
$produto2 = new Produto();
$produto3 = new Produto();
?>

Isso informa ao interpretador do PHP que um novo objeto está sendo criado. Então internamente o PHP reserva um espaço na memória onde aquele objeto vai ser armazenado. Por causa disso quando trabalhamos com objetos (a partir do PHP 5) todos os valores são passados por referencia, ou seja:

<?php
$produto = new Produto();
$produto->preco = 1;
 
echo $produto->preco; // imprime 1
 
$produto_copia = $produto;
$produto_copia->preco = 3;
 
echo $produto->preco; // imprime 3
 
?>

Explicando todo o processo por trás: quando instanciamos a classe Produto dentro da variável $produto, é criado um espaço na memória onde o objeto fica armazenado e a variável $produto guarda a referência para aquele espaço, ou seja a variável aponta diretamente para a memória. Quando dizemos que $produto_copia é igual a $produto, $produto_copia irá copiar a referência para a memória e não o objeto. Assim qualquer alteração feita em $produto_copia afetará $produto, pois ambos apontam para o mesmo objeto na memória.

É possível que seu navegador não suporte a exibição desta imagem.

3. Construtores e destruidores

Em certos momentos precisamos executar algo no momento em que uma classe é instanciada. Às vezes é necessário setar valores padrões a algumas propriedades, realizar cálculos, etc.

Para isso existe o método construtor, que no PHP é chamado através da palavra chave __construct. Toda vida que uma classe é instanciada o PHP busca pelo método __construct e o chama caso seja encontrado. O método construtor não é obrigatório, por tanto sua classe instanciará normalmente se você não declará-lo.

Ao instanciar classes é possível passar para ela parâmetros. Esses parametros são repassados para o construtor. Veja o exemplo:

<?php
class Produto {
 
public $codigo;
public $nome;
public $quantidade;
 
/**
 
* Construtor
 
*/
 
public function __construct( $codigo, $nome, $quantidade ) {
 
$this->codigo = $codigo;
$this->nome = $nome;
$this->quantidade = $quantidade;
 
}
 
}
 
$produto1 = new Produto( 1, "CD Nine Inch Nails – With Teeth", 4 );
$produto2 = new Produto( 2, "CD A Perfect Circle – Mer De Noms", 3 );
 
?>

Também temos os destrutores que no PHP são chamados através da palavra chave __destruct. Ao contrario dos construtores, os destrutores são chamados quando um objeto é destruído, por exemplo:

<?php
class MinhaClasse {
public function __destruct() {
trigger_error( 'Por favor, não me destrua!!!!' );
}
}
 
$objetoMinhaClasse = new MinhaClasse();
 
unset( $objetoMinhaClasse ); // dispara o erro
 
?>

Autor/fonte: Bruno Viana

Compartilhe :

  • Stumble upon
  • twitter

Escreva um comentário

Security Code: