Sempre foi grande a queixa por parte dos desenvolvedores o
fraco suporte à Programação Orientação a Objetos (POO) que o
PHP 4 oferecia. A falta de recursos como: modificadores
explícitos (public, private), classes abstratas, interfaces,
chamadas de objetos com várias hierarquias e outras muitas
características fazem bastante falta quando o assunto é o
Desenvolvimento Orientado a Objetos. Pra se ter uma idéia, o
VBScript, a linguagem padrão do ASP (Active Server Pages da
Microsoft), já tinha modificadores como private e public.
Aí veio o PHP 5 para resolver nossos problemas. Ou melhor,
resolver boa parte de nossos problemas. Foram adicionadas
grandes melhorias no que se diz respeito à POO, porém devemos
saber que o passo dado não foi definitivo, pois existem várias
características de POO que não foram ainda totalmente definidas.
Bem, o propósito deste artigo não é discutir sobre as novas
funcionalidades do PHP 5 e nem definir os vários conceitos de
POO e sim falar apenas de um deles: O Polimorfismo, e saber como
ele pode ser implementado no PHP 5.
Você pode ter explicações mais detalhadas sobre as mudanças do
PHP 4 pra 5 neste link:
Então vamos lá! Falaremos de Polimorfismo! O que seria isso? Vamos
pela definição do nome: polimorfo + ismo. Que é uma referência à
palavra grega "polymorphos", ou seja, "que se apresenta sobre numerosas formas", "sujeito a variar de forma"(3).
Então o que teríamos em programação? Seria a característica que um
objeto teria de apresentar diferentes comportamentos em situações ou
contextos diferentes. A idéia de Polimorfismo está estritamente
ligada à existência de interfaces (uma das características de uma
Linguagem OO). Pois é a partir delas que podemos "classificar"
famílias de objetos que tem comportamentos em comum, porém tem
implementações diferentes. Queremos executar a mesma ação de um
determinado objeto, qualquer que seja o seu tipo.