Conheça o Plugfeed | » Início » Programação » PHP » Classes no PHP
Conheça o Plugfeed | » Início » Programação » PHP » Classes no PHP -->
 
Avaliação: | Publicado em: 12/07/2007
Classes no PHP
Luan Ferreira Estudante do 5º semestre de Sistemas de Informação da FAP - Faculdade Piauiense. Possui conhecimento em algumas linguagens de programação tais como: PASCAL, C, C++, Object Pascal, Javascript, PHP, além de um pouco da tecnologia AJAX.
Classes no PHP

Bem, esta é a primeira vez que estou postando aqui, espero não estar colocando algo repetido ou parecido com algum artigo anteriormente publicado no plugmasters, se estiver peço desculpas, prometo melhorar na próxima postagem.

Neste pequeno artigo, tentarei expor de forma clara e concisa conceitos básicos da orientação de objetos e como esta funciona no PHP5 buscando facilitar o entendimento através de simples exemplos.

Objeto
Um objeto pode ser uma pessoa, um lugar, uma bicicleta, um avião, ou até mesmo um evento. As duas características que definem um objeto são os atributos e comportamentos (métodos).

Os atributos seriam os aspectos de um objeto:

                Objeto Pessoa:

· Nome

· Idade

· Altura

· Cor do cabelo

Os métodos seriam as ações de um objeto:

                Objeto Pessoa:

· Caminhar

· Pular

· Correr

· Ficar de pé

Você deve estar se perguntando, qual a principal vantagem da utilização de objetos. Com um objeto concentramo-nos apenas nos detalhes que são interessantes para nós (no caso o objeto que está sendo implementado) deixando de lado detalhes que não são importantes.

Construtores
São funções chamadas automaticamente no momento da inicialização de um objeto, são usadas geralmente na inicialização de atributos, denominadas pela palavra __construct(). 

Destrutores
São funções que são consideradas o oposto das construtoras, são chamadas no momento em que o objeto está sendo destruído, podem servir para registrar um log de informações sobre a destruição do objeto, denominadas pela palavra  __destruct().

Modificadores de acesso
Existem ainda os modificadores de acesso, que determinam de onde os métodos ou atributos podem ser chamados/acessados. São eles:

· Public – permite o acesso a este método ou atributo de qualquer escopo (se não for declarado este será o método de acesso padrão);

· Protected – podem ser acessados de um método dentro da própria classe ou dentro de uma classe que recebeu herança desta;

· Private – Só podem ser acessados por métodos de sua própria classe;

Exemplo
Como exemplo utilizaremos o objeto pessoa, onde os atributos serão:  nome, idade e altura; e os métodos:  o construtor, setar, retornar nome, idade e altura da pessoa.

pessoa.class.php

<?php

class PESSOA {
    private $pes_nome;        //declaração do atributo privado pes_nome               
    private $pes_idade;        //declaração do atributo privado pes_idade
    private $pes_altura;    //declaração do atributo privado pes_altura
   
    //função pública que é executada no momento de criação do objeto
    public function __construct() {
        echo '<p>Nova Pessoa Criada.</p>';    //exibe mensagem no momento da criação do objeto
       
        /*OBS: O $this é uma pseudo-variável que é utilizada para referenciar ao próprio objeto, ou seja,
          $this->setar(null,0,0) está acessando à função setar presente NESTA classe, $this->pes_nome
          estaria acessando ao atributo $pes_nome NESTA classe. */
       
        $this->setar(null,0,0);    //chama-se a função setar atribuindo valores "nulos" aos atributos da pessoa
    }
   
    //função que seta uma pessoa, recebendo como parametros um nome uma idade e uma altura
    public function setar($nome, $idade, $altura) {
        $this->pes_nome        = $nome;    //atributo pes_nome recebe o nome passado por parâmetro
        $this->pes_idade    = $idade;    //atributo pes_idade recebe a idade passada por parâmetro
        $this->pes_altura    = $altura;    //atributo pes_altura recebe a altura passada por parâmetro
    }
   
   
    public function getNome() {     //função que retorna apenas o nome da pessoa
        return $this->pes_nome;
    }
   
    public function getIdade() {    //função que retorna apenas a idade da pessoa
        return $this->pes_idade;
    }
   
    public function getAltura() {    //função que retorna apenas a altura da pessoa
        return $this->pes_altura;
    }
   
}

?>

main.php

<?php
include 'pessoa.class.php';
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Main :: Classe PESSOA</title>
</head>
<body>
    <?php
    $uma_pessoa     = new PESSOA;                     //criação de uma nova instância da classe PESSOA ($uma_pessoa)
    $outra_pessoa    = new PESSOA;                     //criação de uma nova instância da classe PESSOA ($outra_pessoa)

    $uma_pessoa->setar('João da Silva',19,1.75);    //chama-se a função setar, que seta os dados do objeto $uma_pessoa
    $outra_pessoa->setar('José de Sousa',45,1.72);    //chama-se a função setar, que seta os dados do objeto $outra_pessoa
   
    echo '<p>';
    echo $uma_pessoa->getNome() . '<br />';            //exibe apena o nome da pessoa seguido de uma quebra de linha
    echo $uma_pessoa->getIdade() . '<br />';        //exibe apena a idade da pessoa seguida de uma quebra de linha
    echo $uma_pessoa->getAltura() . '<br />';        //exibe apena a altura da pessoa seguida de duas quebras de linha
    echo '</p>';
   
    echo '<p>';
    echo $outra_pessoa->getNome() . '<br />';        //exibe apena o nome da pessoa seguido de uma quebra de linha
    echo $outra_pessoa->getIdade() . '<br />';        //exibe apena a idade da pessoa seguida de uma quebra de linha
    echo $outra_pessoa->getAltura() . '<br />';        //exibe apena a altura da pessoa seguida de duas quebras de linha
    echo '</p>';
   
    ?>
</body>
</html>

Estes arquivos encontram-se no anexo.

O próximo artigo abordará heranças e como estas funcionam no PHP5.

Espero que tenham gostado.
Até a próxima.

Arquivos anexos ao artigo

Puts! Estava precisando de ajuda em classes mesmo. Valeu Luan Ferreira. Show mesmo.
Éh isso aí cara... mto bom !!! Mto bom o material...

PH
Ithalo Furtado <ithalo.vicious@hotmail.com>
Nossa Senhora! Esse artigo realmente me abriu fronteiras e me fez enxergar tudo mais claro agora! Luan Ferreira, muito obrigado mesmo!!!
Cara... ótimo post. Foi bem útil para mim e com certeza também será para outros. Parabéns e continue assim!
Luan Ferreira muito obrigada, você me ajudou bastante. Sua linguagem foi clara, precisa e concisa. PARABÉNS!!

Muito boa a explicação. Parabéns. Ótimo artigo.
Coder
Esta muito bom, só a organização das linhas de código é que podia estar um pouco melhor, mas de resto 5 estrelas ;)
Vanessa Marquesin <vanessa@pixelx.com.br>
queria saber seu email, obrigada.
isso aeh !!!excelente material








Um produto Detetive.net