Objota O mundo orientado a objetos

Classes em php

Posted on julho 12, 2010

Antes de ler este artigo.

Se você não conhece nada de php veja: Primeiros passos com php

E se não conhece nada sobre programação orientada a objetos veja: Conceitos básicos de POO – Abstração e Modularização

Se já leu estes artigos ou já conhece o assunto, vamos proseguir.

Neste artigo vou mostrar como fazer classes em php, porém antes de falar de classes é preciso antes falar de orientação a objetos. Caso você não tenha nenhum conhecimento de orientação a objetos, leia este artigo que escrevi sobre:

Abstração e modularização.

Se já sanou suas dúvidas sobre POO (programação orientada a objetos) vamos prosseguir, visto que já leu ou procurou sobre tal assunto vou utilizar termos referentes a tal assunto.

Regras básicas para se construir uma classe em php:

  • O arquivo deve ter o mesmo nome da classe
  • O nome da classe deve sempre iniciar com letra maiúscula
  • Toda classe deve sempre iniciar com a palavra chave class

Seguindo estas regras podemos então, ter a classe da seguinte forma:

<?php

class Pessoa{
	private $nome;
	private $cpf;

	//Método construtor
	public function Pessoa($nome, $cpf){
		$this->nome = $nome;
		$this->cpf = $cpf;
	}

	//Métodos de acesso
	public function getNome(){
		return $this->nome;
	}

	public function getCpf(){
		return $this->cpf;
	}

	//Métodos modificadores
	public function setNome($novoNome){
		$this->nome = $novoNome;
	}

	public function setCpf($novoCpf){
		$this->cpf = $novoCpf;
	}

	//Outros métodos

	public function mostraDados(){
		echo "O nome é: ".$this->nome."<br />
		     "e o cpf é: ".$this->cpf;
	}
}

?>

Como visto no exemplo acima o nome do método construtor deve ser o mesmo nome da classe. Sempre, caso contrário não será considerado um método construtor. Fica inicialmente  a dúvida de porque fazer “métodos de acesso” e “métodos modificadores”, pois bem. Tudo isso é feito para manter o encapsulamento do objeto pessoa.
Por hora basta saber que uma classe que é construída de forma a tornar o objeto bem encapsulado é uma boa prática de programação.

Como isso acontece?

Através das palavras chave public, private.

Essas palavras especificam a visibilidade de elementos da classe. Por exemplo, veja no exemplo anterior que declarei que os atributos da classe (cpf e nome) são private, ou seja, eles só podem ser referenciados diretamente de dentro da classe. Visto que ações externas não podem alterá-las ou acessá-las, foi preciso então utilizar-se de métodos que auxiliassem esta relação. São os chamados métodos de acesso e modificadores.

Em outras linguagens como Java é possível declarar public ou private para a própria classe.

Vejamos agora um exemplo funcionando do nosso objeto Pessoa.

Crie um arquivo com o nome de Pessoa.class.php. Por favor, por questão de organização tenha o costume de dar a seguinte extensão para arquivos que contém classes “.class.php”. Veja que o “ponto class” (.class) na verdade ainda é parte do nome, e que a verdadeira extensão ainda é (.php).

Crie e copie o exemplo 1 para dentro deste arquivo e salve. Agora veremos o exemplo 2.

<?php
//incluo minha classe neste arquivo
include_once("Pessoa.class.php");

//Instanciando ou Inicializando um objeto

// A variavel abaixo poderia se chamar joaozinho, caso vocÊ queira
	$obj = new Pessoa("Objota",333);

// Acesso o método modificador com (->), e altero cpf para '222'
	$obj->setCpf(222);

// Por fim chamo o método que mostra na tela
	$obj->mostraDados();

?>

Salve este arquivo com o nome de executar.php. jogue os dois arquivos dentro da pasta htdocs do seu servidor apache. E veja o que acontece. Se tudo der certo você verá a seguinte mensagem na tela:

O nome é: Objota
e o cpf é: 333

Obs: Lembrando que o método echo, nativo do php, imprime na tela toda string a sua frente até encontra um “;” (ponto-e-vírgula) que indica o final de uma linha de comando.

Veja também, um exemplo classe em java: Construindo uma classe
e note como é muito parecido com php.

Este artigo finaliza aqui. Dúvidas por favor deixe nos comentários. Até a próxima.

Posted by Rodrigo Ireno

Comentários (8) Trackbacks (0)
  1. Caro, parabéns
    eu vinha tentando aprender OO a um tempo, e esse seu exemplo claro e direto me ajudou a entender melhor a pratica. O conceito eu já tinha assimilado, mas vinha tendo dúvidas e dificuldades para implantar na prática.

    Obrigado por compartilhar seu conhecimento

    Att

    • Olá Roberto, estou grato pelo seu comentário. É sempre bom ser reconhecido.
      Dúvidas e sugestões é só comentar aí 🙂
      – próximos artigos serão sobre (xml vs. json)

      valew, abraço!

  2. Concordo com o Roberto, muito bom seu artigo, deixa bem claro cada ponto da explicação, ajudou bastante a entender o conceito.

  3. Olá Rodrigo!

    Sou novo aqui e logo percebi o rico conteúdo que você transmite!
    Queria lhe dizer que continue compartilhando seus conhecimentos
    com agente !

    Só uma obs:

    acho legal de usar o método __construct em vez do nome da classe
    e atributos método/atributos protected que pode ser acessados em
    sua própria classe como das classe filhas

    Tá otimo seus artigos !!!

  4. ola amigo…

    segui o seu exemplo e criei esta classe WebSite mas esta a dar me erro de syntax pode me ajudar a reparar o erro????

    aqui fica o codico:

    site= $novo_site;
    $this->tags= $novo_tags;
    }

    public function get_site(){
    return $this->site;
    }

    public function get_tags(){
    return $this->tags;
    }

    public function set_site($novo_site){
    $this->site = $novo_site;
    }

    public function set_tags($novo_tags){
    $this->tags = $novo_tags;
    }

    public function exibir_website(){
    return $this->site;
    }
    }

    ?>

    saida:

    set_tags(‘alvo’,’teste’);

    $Wsite->exibir_website();

    ?>

    Agradeco pelo belo tutorial abraço


Leave a comment

Sem trackbacks