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: 36.727 ]

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

Macromedia Studio 8 no Wine em detalhes

Construindo componentes em PHP e jQuery

Abordagem exemplificada à Orientação a Objetos com PHP

Gerando gráficos com PHP e highcharts.com

Utilizando PHP e Apache para desligar um Ubuntu

Leitura recomendada

Criando um sistema de banners rotativos em PHP

Usando cache na classe Fast Template

Capturando conteúdo de sites em PHP

Utilizando PHP para validar dados passados pelo usuário

Utilizando PHP e Apache para desligar um Ubuntu

  
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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts