Uma classe é uma coleção de variáveis e funções trabalhando com essas variáveis. Uma classe é definida usando-se a seguinte sintaxe:
<?php class Cart { var $items; // Items no nosso carrinho de compras // Acrescenta $num artigos de $artnr ao carrinho function add_item ($artnr, $num) { $this->items[$artnr] += $num; } // Tira $num artigos de $artnr do carrinho function remove_item ($artnr, $num) { if ($this->items[$artnr] > $num) { $this->items[$artnr] -= $num; return true; } else { return false; } } } ?> |
Isto define uma classe chamada Cart que consiste de uma matriz associativa de artigos no carrinho e duas funções para acrescentar e remover items deste carrinho.
Classes são tipos, ou seja, eles são modelos de variáveis atuais. Você tem que criar uma variável do tipo desejado com o novo operador.
Isto cria um objeto $cart da classe Cart. A função add_item() daquele objeto está sendo chamada para acrescentar 1 item do artigo número 10 ao carrinho.
Classes podem ser extensões de outras classes. A classe estendida ou derivada tem todas as variáveis e funções da classe base e o que você acrescentar na definição estendida. Isto é feito usando-se a palavra-chave 'extends'. Herança múltipla não é suportada.
Isto define uma classe Named_Cart que tem todas as variáveis e funções de Cart mais uma variável adicional $owner e uma função adicional set_owner(). Você pode criar um carrinho com nome na forma normal, e agora pode setar e obter o proprietário do carrinho. Você pode ainda usar as funções normais do carrinho em carrinhos com nomes:
$ncart = new Named_Cart; // Cria um carrinho com nome $ncart->set_owner ("kris"); // Nomeia aquele carrinho print $ncart->owner; // imprime o nome dos proprietários do carrinho $ncart->add_item ("10", 1); // (funcionalidade herdada de 'cart') |
Dentro das funções de uma classe, a variável $this significa este objeto. Você tem que usar $this->algo para acessar qualquer variável ou função chamada 'algo' dentro do seu objeto corrente.
Construtores são funções em uma classe que são chamadas automaticamente quando você cria uma nova instância de uma classe. Uma função se torna um construtor quando ela tem o mesmo nome que a classe.
Isto define uma classe Auto_Cart que é um Cart mais um construtor que inicializa o 'cart' com um item do artigo número "10" cada vez que um novo Auto_Cart está sendo feito com "new". Construtores também podem levar argumentos e esses argumentos podem ser opcionais, o que os torna muito mais úteis.
class Constructor_Cart extends Cart { function Constructor_Cart ($item = "10", $num = 1) { $this->add_item ($item, $num); } } // Compra aquele mesmo material velho e chato. $default_cart = new Constructor_Cart; // Compra para valer... $different_cart = new Constructor_Cart ("20", 17); |
Cuidado |
Para classes derivadas, o construtor da classe pai não é chamado automaticamente quando o construtor da classe derivada é chamado. |