PHP 5 introduce clases y métodos abstractos. No es permitido
crear una instancia de una clase que ha sido definida como abstracta.
Cualquier clase que contenga por lo menos un método abstracto
debe también ser abstracta. Los métodos definidos como
abstractos simplemente declaran el método, no pueden definir la
implementación
Cuando se hereda desde una clase abstracta, todos los metodos marcados
como abstractos en la declaración de la clase padre, deben de
ser definidos por la clase hijo; adicionalmente, estos metodos se deben
definir con la misma o menor
visibilidad.
Si el método abstracto es definido como protected,
la implementació de la función debe ser definida como
protected o public.
Ejemplo 19-16. Ejemplos de la clase Abstract
<?php abstract class AbstractClass { // Force Extending class to define this method abstract protected function getValue(); abstract protected function prefixValue($prefix);
// Common method public function printOut() { print $this->getValue() . "\n"; } }
class ConcreteClass1 extends AbstractClass { protected function getValue() { return "ConcreteClass1"; } public function prefixValues($prefix) { return "{$prefix}ConcreteClass1"; } }
class ConcreteClass2 extends AbstractClass { protected function getValue() { return "ConcreteClass2"; }
public function prefixValue($prefix) { return "{$prefix}ConcreteClass2"; } }
$class1 = new ConcreteClass1; $class1->printOut(); echo $class1->prefixValue('FOO_') ."\n";
$class2 = new ConcreteClass2; $class2->printOut(); echo $class2->prefixValue('FOO_') ."\n"; ?>
|
El resultado del ejemplo seria: ConcreteClass1
FOO_ConcreteClass1
ConcreteClass2
FOO_ConcreteClass2 |
|
El coódigo anterior que no tenía clases definidas por el
usuario o funciones llamadas 'abstractas' puede correr sin necesidad
de modificación.