Modelo de orientação a objetos em PHP 5

No artigo anterior comentamos as carências do modelo de orientação a objetos em PHP 3 e 4, que felizmente foram supridas na versão PHP 5.

Como dizíamos, um dos problemas mais básicos das versões anteriores de PHP era a clonagem de objetos, que se realizava ao atribuir um objeto a outra variável ou ao passar um objeto por parâmetro em uma função. Para resolver este problema PHP5 usa os manipuladores de objetos (Object handles), que são uma espécie de ponteiros que apontam os espaços de memória onde residem os objetos. Quando se atribui um manipulador de objetos ou se passa como parâmetro em uma função, se duplica o próprio object handle e não o objeto em si.

Nota: Também pode-se realizar uma clonagem de um objeto, para obter uma cópia exata, mas que não é o próprio objeto. Para isso, utilizamos uma nova instrução chamada “clone”, que veremos mais adiante.

Algumas características do trabalho com POO em PHP 5

Vejamos a seguir uma pequena lista das novas características da programação orientada a objetos (POO) em PHP5. Não vamos descrever exaustivamente cada característica. Faremos isso mais adiante neste mesmo manual.

1.- Nomes fixos para os construtores e destrutores
Em PHP 5 temos que utilizar nomes pré-definidos para os métodos construtores e destrutores (Os que se encarregam de resumir as tarefas de iniciação e de destruição dos objetos. Agora se chamam __construct() y __destruct().

2.- Acceso public, private e protected a propriedades e métodos
A partir de agora podemos utilizar os modificadores de acesso habituais da POO. Estes modificadores servem para definir que métodos e propriedades das classes são acessíveis desde cada meio.

3.- Possibilidade de uso de interfaces
As interfaces se utilizam na POO para definir um conjunto de métodos que implementa uma classe. Uma classe pode implementar várias interfaces ou conjuntos de métodos. Na prática, o uso de interfaces é utilizado muitas vezes para suprir a falta de herança múltipla de linguagens como PHP ou Java. Explicaremos isto com detalhe mais adiante.

4.- Métodos e classes final
Em PHP 5 pode-se indicar que um método é “final”. Com isso, não se permite sobrescrever esse método, em uma nova classe que o herde. Se a classe é “final”, o que se indica é que esta classe não permite ser herdada por outra classe.

5.- Operador instanceof
Utiliza-se para saber se um objeto é uma instância de uma classe determinada.

6.- Atributos e métodos static
Em PHP5 podemos fazer uso de atributos e métodos “static”. São as propriedades e funcionalidades as quais se pode acessar a partir do nome de classe, sem a necessidade de haver instanciado um objeto de tal classe.

7.- Classes e métodos abstratos
Também é possível criar classes e métodos abstratos. As classes abstratas não se podem instanciar, costumam ser utilizadas para herda-las de outras classes que não têm porque serem abstratas. Os métodos abstratos não podem ser chamados, utilizam-se mais para serem herdados por outras classes, onde não têm porque serem declarados abstratos.

8.- Constantes de classe
Pode-se definir constantes dentro da classe. Logo, pode-se acessar tais constantes através da própria classe.

9.- Funções que especificam a classe que recebem por parâmetro
Agora podem se definir funções e declarar que devem receber um tipo específico de objeto. No caso de que o objeto não seja da classe correta, se produz um erro.

10.- Função __autoload()
É habitual que os desenvolvedores escrevam um arquivo por cada classe que realizam, como técnica para organizar o código das aplicações. Por essa razão, às vezes é fatigante realizar os incluis de cada um dos códigos das classes que se utilizam em um script. A função __autoload() serve para tentar incluir o código de uma classe que se necessite, e que não tenha sido declarada ainda no código que está sendo executada.

11.- Clonagem de objetos
Se desejarmos, podemos realizar um objeto a partir da cópia exata de outro objeto. Para isso, utiliza-se a instrução”clone”. Também pode se definir o método __clone() para realizar tarefas associadas coma clonagem de um objeto.

Fonte: http://www.criarweb.com/artigos/330.php

Deixe um comentário