Hospedagem de Sites
 
 
 Home  •  Downloads  •  Minha Conta  •  Forums  
 
   
 
Menu Principal
 Home
 Cadastrar
 Procurar
 Contato

 Visitantes
 Artigos
 Enquetes
 Web Links
 Recomende-nos
 Manual do PHP
 Manual PHP-Nuke
 Guia Linux Básico
 Guia Linux Avançado
 Anuncie Conosco
 Patrocinador
· Hospedagem
· Planos de Hospedagem
· Hospedagem PHP
· Revenda

 Usuários
 Sua Conta
 Downloads
 Lista de Membros
 Enviar Notícias
 Mensagens Privado
 Contato
 Conteúdo

 Informações
Visual Elegante

Um lindo modelo da OSCommerce oferecido em parceria com a Hospedagem Segura e o Portal PHPMania:




Conheça a versão demo instalada no servidor da Hospedagem Segura

Faça o download grátis da loja Clicando aqui!

Usuários
Bem-vindo(a) Visitante


Apelido

Senha


 

Cadastramento

 · Hoje: 0

 · Ontem: 0

 · Total: 63176


5 Últimos Registros   jV1yB8gH3q   wJ1gN1rB2n   tE8aK5cI9x   qP6dB8eM8t   wX2zK1rU8v

Pessoas on-line

 Visitantes: 134

 Cadastrados: 0

 Total online: 134

Ajude o PHPMania

Faça uma doação ao nosso Portal, ajude o PHPMania!

Classes e Objetos

Capítulo 13. Classes e Objetos

class

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 CarrinhoDeCompras
{
    var $items;  // Itens do carrinho de compras

    // Acrescenta a quantidade $num do artigo $artnr no carrinho

    function add_item ($artnr, $num)
    {
        $this->items[$artnr] += $num;
    }

    // Retira a quantidade $num de artigos $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 CarrinhoDeCompras que consiste de uma matriz associativa de artigos no carrinho e duas funções para acrescentar e remover itens deste carrinho.

Atenção

Você NÃO pode quebrar uma definição de classe em vários arquivos, ou vários blocos PHP. O exemplo seguinte não funciona:

<?php
class test {
?>
<?php
    function test() {
        print 'OK';
    }
}
?>

Os cuidados a seguir devem ser tomados a partir do PHP 4:

Cuidado

O nome stdClass é utilizado internamente pela Zend e é uma palavra reservada. Você não pode ter uma classe chamada stdClass no PHP.

Cuidado

O nome de função __sleep e __wakeup são especialmente mágicos para as classes PHP. Você não pode ter esses nomes em nenhuma de suas classes a não ser que você deseje aplicar essa funcionalidade mágica com elas. Veja abaixo para mais detalhes.

Cuidado

O PHP reserva todos os nomes de funções começando com __ como mágicas. É recomendável que você não utilize nome de funções começando com __ no PHP a não ser que você precise dessas funcionalidades mágicas.

No PHP 4, somente inicializações com constantes são permitidas para variáveis com var. Para inicializar variáveis com valores não constantes, você precisará de uma função de inicialização chamada automaticamente quando o objeto for construído a partir da classe. Por isso, essa função é conhecida como construtor (veja baixo).

<?php
/* Nenhuma delas funcionarão com o PHP 4 */
class CarrinhoDeCompras
{
    var $data_de_hoje = date("Y-m-d");
    var $nome = $primeiro_nome;
    var $proprietario = 'Fred ' . 'Jones';
    var $items = array("VCR", "TV");
}

/* Esta é a forma como deve ser feito */
class CarrinhoDeCompras
{
    var $data_de_hoje;
    var $nome;
    var $proprietario;
    var $items;

    function CarrinhoDeCompras()
    {
        $this->data_de_hoje = date("Y-m-d");
        $this->nome = $GLOBALS['primeiro_nome'];
        /* etc. . . */
    }
}
?>

Classes são tipos, ou seja, são apenas um modelo das variáveis normais. Você pode criar uma variável (ou instância) do tipo desejado com o operador new.

<?php
$carrinho = new CarrinhoDeCompras;
$carrinho->add_item("10", 1);

$outro_carrinho = new CarrinhoDeCompras;
$outro_carrinho->add_item("0815", 3);
?>

Isto cria os objetos $carrinho e $outro_carrinho, ambos a partir da classe CarrinhoDeCompras. A função add_item() do objeto $carrinho foi chamada e acrescentou 1 item do artigo número 10 a $carrinho. 3 itens do artigo número 0815 foi acrescentado no $outro_carrinho.

Ambos, $carrinho e $outro_carrinho, tem as funções add_item(), remove_item() e a variável itens. Elas são funções e variáveis distintas entre si. Você pode pensar no objetos como os diretórios de um sistema de arquivos. Num disco você pode ter dois arquivos diferentes README.TXT, partindo de que eles estão em diretórios diferentes. Da mesma forma que você teria de especificar o caminho completo para acessar cada arquivo a partir do diretório principal, você também tem de especificar o nome completo do objeto e função que você quer chamar. No PHP o diretório principal pode ser o escopo global de nomes, e o separador de diretórios ->. Portanto, os nomes $carrinho->items e $outro_carrinho->items são duas variáveis diferentes. Note que a variável é chamada $carrinho->items, não $carrinho->$items, mesmo porque, um nome de variável em PHP tem apenas um único sinal de cifrão.

<?php
// correcto, apenas um $
$carrinho->items = array("10" => 1);

// inválido, porque $carrinho->$items se transforma em $carrinho->""
$carrinho->$items = array("10" => 1);

// correto, mas pode ou não ser o que você quer:
// $carrinho->$myvar se torna $carrinho->items
$myvar = 'items';
$carrinho->$myvar = array("10" => 1);
?>

Quando definindo uma classe, você não pode saber com que nome os objetos serão acessados em seus programas: enquanto escrevia a classe CarrinhoDeCompras, é impossível saber se o objeto criado a partir dela será chamado $carrinho ou $outro_carrinho (ou ainda ambos). Assim, você não pode escrever $carrinho>items dentro da própria classe CarrinhoDeCompras. Entretanto, para poder acessar suas próprias funções e variáveis de dentro da classe, pode-se utilizar a pseudo-variável $this, que pode ser lida como 'eu mesmo' ou 'objeto atual'. Dessa forma, '$this->items[$artnr] += $num' pode ser lido como 'acrescente $num para o contador $artnr do meu array items' ou 'acrescente $num para o contador $artnr do array items do objeto atual'.

Nota: Há funções muito boas para manipulação de classes e objetos. Dê uma olhada em Funções de Classes e Objetos

PHP Mania - Copyright © 2012

Planos de Hospedagem - Hospedagem PHP - Hospedagem ASP - Revenda de Hospedagem - Hospedagem de Sites - Construtor de Sites
Hospedagem Java - Hospedagem MySQL - Hospedagem JSP - Hospedagem Sql Server - Servidor Hospedagem - Hospedagem Domínio
Cloud Server Cloud computing Hospedagem Windows - Hospedagem Linux - Servidor Streaming - Construtor de Blog

PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Tempo para gerar esta página: 0.36 segundos

| DAJ_Glass phpbb2 style by Dustin Baccetti | PHP-Nuke theme by www.nukemods.com |