Programação Orientada A Objetos No PHP 5 – Parte 1

O PHP é uma das linguagens de programação mais utilizadas do mundo. Em parte pelos custos de manutenção muito baixos e também devido à curva de aprendizado.

Graças a acessibilidade da linguagem com tipagem fraca e liberdade de estrutura, muito código mal formado é produzido utilizando PHP. E isso gera ainda a má fama de ser uma linguagem de segunda categoria.

Esta idéia esta mudando ao poucos desde o lançamento do PHP 5 que oferece um modelo de desenvolvimento mais estruturado. Com isso o código pode ser composto de forma a ser reutilizado ao mesmo tempo em que se torna mais organizado e de fácil análise. Isso também é conhecido como programar orientado a objetos.

Programação Orientada a Objetos

Programação Orientada a Objetos

Também conhecida pelas iniciais POO, ou se você prefere inglês OOP, a Programação Orientada a Objetos torna-se progressivamente um modelo seguido pelos desenvolvedores de diversas linguagens. Algumas na verdade exigem que seja feito assim.

Na POO o código é divido em pequenos blocos de procedimentos bastante específicos. Eles são chamados de objetos. O encadeamento das ações disparadas pelos objetos é que faz o programa funcionar.

Certo, e daí? E daí que de uma maneira geral isso que é a POO. Tornar o seu código mais organizado e modular.

Mas cuide para não confundir isso com criar funções. Quando você programa orientado a objetos existe todo um relacionamento e diretrizes seguidas. Não é simplesmente colocar uma função rodando depois da outra.

O Código

Ao invés de trabalhar com analogias e desfilar novos termos, penso que é melhor já começarmos com um exemplo.



class Web{
  public $linguagem;
  public function pagina(){
    echo 'Página escrita utilizando '.$this -> linguagem;
  }
}

$var = new Web();
$var->linguagem = 'PHP';
$var -> pagina();

A execução destas linhas mostra na tela a frase: “Página escrita utilizando PHP”.

Classe

A palavra reservada class informa que estamos criando uma classe chamada “Web”. O papel da classe é reunir as características e comportamentos comuns dos objetos.

Um exemplo muito utilizado para ilustrar o papel de uma classe vem da biologia. A classe dos Mamíferos engloba animais tão diferentes quanto o cachorro e o morcego. Mas todos possuem características comuns como produção de leite, coluna vertebral.

Na programação utilizamos o mesmo conceito. A classe pode ter diversas funções que pesquisam em múltiplas tabelas, mas em comum dividem o mesmo propósito e pode acontecer também de trabalharem com as mesmas variáveis.

Dando Nome Às Partes

Ao trabalhar com classes e programação orientada a objetos, é comum chamar variável de atributo. Se o valor do atributo muda, o resultado final também é alterado. Em outras palavras, as características do objeto instanciado mudam. Sendo assim, ao somar todos os atributos temos o estado do objeto.

As funções, por sua vez, são chamadas de métodos. Responsáveis pelo comportamento do objeto, o que ele faz.

Ao instanciar uma classe, isto é, utilizá-la como foi feito nas últimas três linhas do código acima, estamos criando um objeto. Este objeto tem um estado, referente ao que é atribuído à variável e um comportamento que são as chamadas de funções.

Apesar dos nomes complicarem um pouco, não há nada de novo. Temos variáveis, funções e chamadas. A nomenclatura é apenas para fins de padronização e apesar de importante, não saber perfeitamente não influencia no funcionamento do código.

Visibilidade

O PHP não exige que você declare a variável antes de utilizá-la. Você pode atribuir um valor para ela no meio do código sem problemas. Também não precisa definir o tipo de dados que a variável deve receber. Isso é chamado de tipagem fraca.

Depois da abertura da classe declaramos a variável com a palavra public na frente. Isso significa que o acesso à variável é público e podemos modificar o valor atribuído a ela de qualquer lugar do código. Tanto que, ao observar a penúltima linha do código de exemplo, você verá que foi atribuído um valor à variável “linguagem” e esta linha não faz parte da classe.

Observe que estou utilizando a variável como exemplo, mas isso também se aplica às funções.

Além do public, outros modificadores de acesso são o protected e o private. Uma propriedade ou método protected esta disponível somente para a classe onde foi criado e para as subclasses desta. Se for private esta disponível somente para a classe e não para as subclasses. Em ambos os casos não podem ser acessados de fora da classe, como acontece com o public.

Altere no código da página esta linha:



public $linguagem;

Por esta:



private $linguagem;

E veja que retorna um erro de acesso. Já que agora o atributo somente pode ser alterado dentro da classe.

Utilizando a classe

A classe em si não faz nada. Ela precisa ser instanciada e alimentada. Foi criado o objeto com a palavra new e armazenado na variável “$var”. Agora, utilizando a variável, temos acesso aos atributos e métodos da classe.



$var = new Web();
$var->linguagem = 'PHP';
$var -> pagina();

Para fazer referência ao método e ao atributo é que utilizamos o traço mais o sinal de maior do que “->”. Estamos dizemos algo como: dentro da classe Web, acesse o atributo linguagem e preencha com a palavra ‘PHP’.

Quando é chamado o método que mostra a frase na tela, por ser uma função, é preciso adicionar os parênteses.

Execute o código e aparece na tela “Página escrita utilizando PHP”.

Parece muito trabalho para mostrar uma simples frase? Realmente é. Os ganhos são mais visíveis em códigos extensos e isso é apenas um simples exemplo.

this

Decidi explicar o this somente agora, pois fica mais fácil de compreender tendo utilizado a classe. O this é uma referência ao objeto em execução. Ao utilizar o this dentro da função pagina() significa que deve mostrar na tela o conteúdo do atributo mensagem que esta neste(this) objeto.

Conclusão

Com o que vimos neste primeiro artigo você já consegue criar pequenas soluções para os seus programas. Na seqüência desta série sobre programação orientada a objetos você verá sobre herança, interface, implementação, construtores e desconstrutores.

Próximo artigo > Programação Orientada A Objetos No PHP 5 – Parte 2

Be Sociable, Share!

8 Comentários

  1. Muito bom artigo, simples para compreensão de quem quer aprender POO. Depois que vi este artigo resolvi voltar a programar em POO, é um pouco complicado mais vale a pena.
    Obrigado..

    Valeu..

    • Olá Leandro! Obrigado pelo seu comentário. O autor do artigo, Maicon Sobczak, escreve artigos e tutoriais de qualidade excepcional. Confesso que também gosto muito de ler os artigos deles. Um Abraço Rui Soares

  2. Valeu pessoal pelo apoio. Sem dúvida é um assunto um pouco complicado e deu trabalho para torná-lo o mais acessível possível. E Leandro, acompanhe que têm mais dois tutoriais sobre o assunto.

  3. É Rui, pelo que estou vendo é muito bom mesmo.

    Ok, Maicon, vou acompanhar sim, valeu pelo apoio.

    Obrigado.

  4. Realmente o tema foi bem resumido/elaborado e com isso facilitou o entendimento.

    Valeu!

    • Olá Gilberto! O artigo foi escrito pelo Maicon Sobczak. Trata-se dum autor muito competente e que escreve bem. Também gosto dos artigos deles. Obrigado pelo seu comentário. Um Abraço! Rui Soares

  5. Denis

    Olá! Estou fazendo um curso de PHP Orientado a objetos e ao mesmo tempo pesquisando materiais complementares. Encontrei este artigo bem sucinto, porém, muito bem explicado e didático. Parabéns ao autor!
    Abraços,
    Denis Oliveira

  6. no site Scriptcase tem algumas informações tbm.

Participa! Comenta...