sexta-feira, 14 de outubro de 2011

PHP5 - Classe


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

Nenhum comentário:

Contribua com este blog, doe qualquer quantia.