O Básico

Classe

Toda definição de classe começa com a palavra-chave class, seguido por um nome da classe, que pode ser qualquer nome que não seja uma palavra reservada no PHP. seguido por um par de chaves, que contém a definição dos membros e métodos da classe. Dentro de cada método, exceto por métodosestáticos (static), uma pseudo variável $this está disponível. $this é uma referência para a mesma instância que chamou o método.

Exemplo 19-1. Definição simples de uma classe

<?php
class ClasseSimples {
   
/* declaração de membro */
   
public $var = 'um valor padrão';

   
/* declaração de método */   
   
public function mostraVar() {
     echo
$this->var;
   }
}
?>

new

Para criar uma instância de um objeto, um novo objeto deve ser criado e atribuído a uma variável. Um objeto sempre será atribuído quando um novo objeto for criado a não ser que o objeto tem umconstrutor definido que dispara (throws) umaexceção por um erro.

Exemplo 19-2. Criando uma instância

<?php
$instancia
= new ClasseSimples();
?>

Quando atribuindo um instância já criada de um objeto à uma nova variável, a nova variável acessará a mesma instância do objeto que foi atribuída. Esse comportamento é o mesmo quando passando instâncias à uma função. Uma nova instância de um objeto já criado pode ser feitaclonando (cloning) ele.

Exemplo 19-3. Atribuição de Objetos

<?php
$atribuido  
=  $instancia;
$referencia =& $instancia;


$instancia->var = '$atribuido terá esse valor';

$instancia = null; /* $instancia e $referencia se tornam nulos (null) */


var_dump($instancia);
var_dump($referencia);
var_dump($atribuido);
?>

O exemplo acima irá imprimir:

NULL
NULL
object(ClasseSimples)#1 (1) {
   ["var"]=>
     string(26) "$atribuido terá esse valor"
}

Herança (extend)

Uma classe pode herdar métodos e membros de uma outra classe usando a palavra-chave extend na declaração. Não é possível herdar classes múltiplas, uma classe só pode herdar de uma classe base.

Os métodos e membros herdados podem ser sobrecarregados, a menos que a classe pai tenha definido o método como final, redeclarando-os usando o mesmo nome definido na classe pai. É possível acessar o método ou membro sobrecarregado referenciando-os comparent::

Exemplo 19-4. Herança Simples

<?php
class ClasseHerdeira extends ClasseSimples {
  
/* Redefine o método pai */
  
function mostraVar() {
    echo
"Classe Herdeira\n";
    
parent::mostraVar();
  }
}

$herdeira = new ClasseHerdeira();
$herdeira->mostraVar();
?>

O exemplo acima irá imprimir:

Class Herdeira
um valor padrão