Abordagem exemplificada de orientação à objeto com PHP 5

Este artigo vem a complementar um outro que escrevi sobre orientação a objeto nos moldes do PHP4. Dessa vez venho trazendo o que houve de mudanças para o PHP5 com duas classes que exemplificam bem essas mudanças.

[ Hits: 34.663 ]

Por: Evaldo Barbosa em 17/08/2006


Construtores e Destrutores, o que mudou?



A forma de se criar um construtor na sintaxe antiga do PHP (v4) era simplesmente criando uma função (método) com o nome da classe. A partir desse momento o programador não deveria se preocupar mais, seu construtor já teria sido criado sem nenhum problema. Ainda é assim, por motivos de compatibilidade com códigos escritos para versões anteriores, porém a coisa mudou um pouquinho.

No PHP5 temos que criar uma função de nome '__construct' para que tenhamos um construtor no novo padrão da linguagem.

Já para os destrutores, em PHP4, não conheço realmente nenhum padrão para isso, estrutura que o PHP5 já implementa com a criação de um método '__destruct' que servirá para esse propósito.

Visibilidade de métodos e atributos


O PHP5 instituiu as palavras reservadas public, private e protected para definir o grau de visibilidade dos métodos e atributos de classes e cada um deles com suas particularidades. Quem já estudou Java deve ter se familiarizado com elas, quem vêm do Delphi conhece-as também, com outra forma de uso, é claro.

Todas as linguagens que têm uma orientação a objeto robusta têm seus níveis de visibilidade bem definidos e é essa vantagem que agora vou explicitar. Vamos à explicação de cada uma:
  • public: palavra reservada que deixa que o método ou atributo seja manipulável em todos os momentos do ciclo de vida da classe.
  • private: palavra reservada que esconde um atributo ou método do meio externo a ela própria, não deixando que seja vista nem pelas classes que são extensões de outras.
  • protected: palavra reservada que esconde um atributo ou método do meio externo a ele, exceto as classes que a derivam.

Agora que estão explicadas as três, vamos em frente!

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Construtores e Destrutores, o que mudou?
   3. A filosofia dos 'getters' e dos 'setters'
   4. Construindo uma classe 'Pessoa'
   5. Derivando 'Funcionario' de 'Pessoa'
   6. Mudanças numa nova versão. O que ainda falta?
Outros artigos deste autor

Utilizando PHP e Apache para desligar um Ubuntu

Gerando gráficos com PHP e highcharts.com

Macromedia Studio 8 no Wine em detalhes

Abordagem exemplificada à Orientação a Objetos com PHP

Construindo componentes em PHP e jQuery

Leitura recomendada

Usando classes em conexão e consultas à banco de dados em PHP

Utilizando PHP para validar dados passados pelo usuário

Criando gráficos com a classe JPGraph (parte 2)

Criando Virtual Host no Apache: simples assim

Debugando aplicações PHP com Xdebug e Eclipse PDT

  
Comentários
[1] Comentário enviado por removido em 18/08/2006 - 08:58h

Parabéns collapse pelo artigo bem explicado...
Acredito que ajudará iniciantes, e aqueles que ainda têm medo de migrar para o PHP5, a utillizarem cada vez mais essa versão...

E tomara que muita coisa melhore nas próximas versões do PHP. Como a manipulação de eventos (dito por você), e tipagem forte de atributos/métodos...

Uma outra funcionalidade que acho interessante seria a possibilidade de se criar propriedades, como o C# (DotNet).

Abraços,

[2] Comentário enviado por F4xl em 19/08/2006 - 01:07h

Muito bom o artigo, Evaldo!

Principalmente para quem está iniciando os estudos em PHP. Um comentário que eu gostaria de ler aqui é sobre como o PHP vai se comportar no mercado concorrendo com a plataforma .NET da Microsoft, uma vez que todos parecem querer migrar para ela.

Abraços a todos!

[3] Comentário enviado por evandrofisico em 19/08/2006 - 20:52h

Para fazer um destructor em php4 é necessária uma pequena gambiarra, colocando dentro da funcao constructor um register_shutdown_function(array(&$this, 'quit'))

onde quit é o nome da funcao a ser executada antes do fim do script

[4] Comentário enviado por rockedsonbr em 30/08/2006 - 11:43h

Muito bom....

Algumas dúvidas?
O método __destruct() tem q ser envocado após o uso da classe?

$myvar->__destruct();

Posso usar unset($myvar); isto já resolve???

Andei lendo alguns artigos e pessoas tem explicações diferentes... qual o mais indicado?

Abraço


Contribuir com comentário