Manual do PHP
Anterior | Capítulo 19. Classes e Objetos (PHP 5) | Próxima

# 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. Uma pseudo variável, `$this`, está disponível quando um método é chamado dentro de um contexto de objeto. `$this` é uma referência para o objeto chamador do método (normalmente o objeto ao qual o método pertence, mas pode ser outro objeto, se o método é chamado statically do contexto de um objeto secundário). Isso é ilustrado no exemplo a seguir:

Exemplo 19-1. Variável `$this` em linguagens com orientação à objetos

`<?php class A { function foo() { if (isset($this)) { echo '$this está definida ('; echo get_class($this); echo ")\n"; } else { echo "\$this não está definida.\n"; } } } class B { function bar() { A::foo(); } } $a = new A(); $a->foo(); A::foo(); $b = new B(); $b->bar(); B::bar(); ?>`

O exemplo acima irá imprimir:

    $this está definida (a)
    $this não está definida.
    $this está definida (b)
    $this não está definida.

Exemplo 19-2. Definição de SimpleClass

`<?php class SimpleClass { // declaração de membro public $var = 'um valor padrão'; // declaração de método public function displayVar() { echo $this->var; } } ?>`

## new

Para criar uma instância de um objeto, um novo objeto deve ser criado e atribuído à uma variável. Um objeto sempre será atribuído quando for criado um novo objeto, a não ser que o objeto tenha um construtor definido que dispare uma exceção por um erro.

Exemplo 19-3. Criando uma instância

`<?php $instance = new SimpleClass(); ?>`

Quando atribuír um instância já criada de um objeto à uma variável nova, essa acessarpa a mesma instância do objeto que foi atribuído. Esse comportamento se mantem quando passando instâncias à uma função. Uma nova instância de um objeto já criado pode ser feita clonando o mesmo.

Exemplo 19-4. Atribuíção de Objetos

`<?php $assigned = $instance; $reference =& $instance; $instance->var = '$assigned terá esse valor'; $instance = null; // $instance e $reference tornam-se nulos var_dump($instance); var_dump($reference); var_dump($assigned); ?>`

O exemplo acima irá imprimir:

    NULL
    NULL
    object(SimpleClass)#1 (1) {
       ["var"]=>
         string(30) "$assigned terá esse valor"
    }

## extends

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

Os métodos e membros herdados podem ser sobrescritos, a não ser que a classe pai definiu um método como final, redeclarando eles com o mesmo nome definido na classe pai. É possível acessar os métodos e membros sobrescritos referenciado eles com parent::

Exemplo 19-5. Herança Simples

`<?php class ExtendClass extends SimpleClass { // Redefine o método pai function displayVar() { echo "Classe Herdeira\n"; parent::displayVar(); } } $extended = new ExtendClass(); $extended->displayVar(); ?>`

O exemplo acima irá imprimir:

    Classe Herdeira
    um valor padrão

Anterior | Principal | Próxima
Classes e Objetos (PHP 5) | Acima | Autoloading Objects