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
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
8 Responses
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
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.
É Rui, pelo que estou vendo é muito bom mesmo.
Ok, Maicon, vou acompanhar sim, valeu pelo apoio.
Obrigado.
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
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
no site Scriptcase tem algumas informações tbm.